From 08fce169a763e09c9d9988497876e8410b959bb3 Mon Sep 17 00:00:00 2001 From: 404 Date: Mon, 7 Feb 2022 23:25:25 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E5=85=B1=E7=94=A8=E6=9D=90=E8=B4=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/index.umd.js | 40 ++++++++++++++++++---------------------- dist/index.umd.js.map | 2 +- src/index.ts | 16 ++++++++-------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/dist/index.umd.js b/dist/index.umd.js index a467c6a..2bd5724 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -52226,7 +52226,7 @@ }; CreepCube.prototype.initCube = function () { return __awaiter(this, void 0, void 0, function () { - var mesh, level, gutter, radius, size, w, h, d, offsetWidth, offsetHeight, offsetDepth, geometry, defaultMaterial, i, _loop_1, this_1, j, outside; + var mesh, level, gutter, radius, size, w, h, d, offsetWidth, offsetHeight, offsetDepth, geometry, materials, defaultMaterial, i, j, index, currMaterial, mesh_1, outside; return __generator(this, function (_a) { this.mesh && this.scene.remove(this.mesh); this.children = []; @@ -52239,19 +52239,19 @@ offsetHeight = h * size / 2 - size / 2; offsetDepth = d * size / 2 - size / 2; geometry = new BoxGeometry(size, size, size); + materials = colors.map(function (color) { + var canvas = getFaceColor(color, radius, gutter, debug.gutterColor); + var texture = new Texture(canvas); + texture.needsUpdate = true; + texture.minFilter = NearestFilter; + texture.generateMipmaps = false; + return new MeshBasicMaterial({ map: texture }); + }); defaultMaterial = new MeshBasicMaterial({ color: debug.gutterColor }); for (i = 0; i < d; i++) { - _loop_1 = function (j) { - var index = i * w * h + j; - var materials = colors.map(function (color) { - var canvas = getFaceColor(color, radius, gutter, debug.gutterColor, String(index)); - var texture = new Texture(canvas); - texture.needsUpdate = true; - texture.minFilter = NearestFilter; - texture.generateMipmaps = false; - return new MeshBasicMaterial({ map: texture }); - }); - var currMaterial = this_1.computeMaterial([ + for (j = 0; j < w * h; j++) { + index = i * w * h + j; + currMaterial = this.computeMaterial([ (j + 1) % w === 0, j % w === 0, i === d - 1, @@ -52259,16 +52259,12 @@ j + w >= w * h, j < w, ], materials, defaultMaterial); - var mesh_1 = new Mesh(geometry, currMaterial); + mesh_1 = new Mesh(geometry, currMaterial); mesh_1.position.set((j % w) * size - offsetWidth, size * i - offsetDepth, (j / w >> 0) * size - offsetHeight); mesh_1.name = String(index); - this_1.mesh.add(mesh_1); - this_1.children.push(mesh_1); - this_1.coordinate[index] = mesh_1.position.clone(); - }; - this_1 = this; - for (j = 0; j < w * h; j++) { - _loop_1(j); + this.mesh.add(mesh_1); + this.children.push(mesh_1); + this.coordinate[index] = mesh_1.position.clone(); } } outside = new Mesh(new BoxGeometry(size * w + 0.01, size * d + 0.01, size * h + 0.01), new MeshBasicMaterial({ @@ -52363,14 +52359,14 @@ y: [], z: [], }; - var _loop_2 = function (k) { + var _loop_1 = function (k) { var _k = lev - k - 1; rules['x'][k] = function (n, i) { return i % lev === _k; }; rules['y'][k] = function (n, i) { return i / squa >> 0 === _k; }; rules['z'][k] = function (n, i) { return (i % 9) / lev >> 0 === _k; }; }; for (var k = 0; k < lev; k++) { - _loop_2(k); + _loop_1(k); } storey = sort > 0 ? storey : lev - storey - 1; var rule = rules[axis][storey]; diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map index c596eab..ce6df2c 100644 --- a/dist/index.umd.js.map +++ b/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/three/build/three.module.js","../node_modules/animejs/lib/anime.es.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/base.ts","../src/utils.ts","../node_modules/tweakpane/dist/tweakpane.js","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '135';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toUpperCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidian modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t// Park-Miller algorithm\n\n\t_seed = _seed * 16807 % 2147483647;\n\n\treturn ( _seed - 1 ) / 2147483646;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\n/**\n * cyrb53 hash for string from: https://stackoverflow.com/a/52171480\n *\n * Public Domain, @bryc - https://stackoverflow.com/users/815680/bryc\n *\n * It is roughly similar to the well-known MurmurHash/xxHash algorithms. It uses a combination\n * of multiplication and Xorshift to generate the hash, but not as thorough. As a result it's\n * faster than either would be in JavaScript and significantly simpler to implement. Keep in\n * mind this is not a secure algorithm, if privacy/security is a concern, this is not for you.\n *\n * @param {string} str\n * @param {number} seed, default 0\n * @returns number\n */\nfunction hashString( str, seed = 0 ) {\n\n\tlet h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n\n\tfor ( let i = 0, ch; i < str.length; i ++ ) {\n\n\t\tch = str.charCodeAt( i );\n\n\t\th1 = Math.imul( h1 ^ ch, 2654435761 );\n\n\t\th2 = Math.imul( h2 ^ ch, 1597334677 );\n\n\t}\n\n\th1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 ) ^ Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 );\n\n\th2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 ) ^ Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 );\n\n\treturn 4294967296 * ( 2097151 & h2 ) + ( h1 >>> 0 );\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.image = image;\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.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\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t// check cube texture with data textures\n\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = serializeImage( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nVector4.prototype.isVector4 = true;\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tsetTexture( texture ) {\n\n\t\ttexture.image = {\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\tdepth: this.depth\n\t\t};\n\n\t\tthis.texture = texture;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.image = { ...this.texture.image }; // See #20328.\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count ) {\n\n\t\tsuper( width, height );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.samples = 4;\n\n\t\tthis.ignoreDepthForMultisampleCopy = options.ignoreDepth !== undefined ? options.ignoreDepth : true;\n\t\tthis.useRenderToTexture = ( options.useRenderToTexture !== undefined ) ? options.useRenderToTexture : false;\n\t\tthis.useRenderbuffer = this.useRenderToTexture === false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\t\tthis.useRenderToTexture = source.useRenderToTexture;\n\t\tthis.useRenderbuffer = source.useRenderbuffer;\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\tthis.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box$3 );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from 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$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\ttoVector3( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast() {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.format = RGBAFormat;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.format !== RGBAFormat ) data.format = this.format;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && 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.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.format = source.format;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopyGammaToLinear( color, gammaFactor = 2.0 ) {\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToGamma( color, gammaFactor = 2.0 ) {\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t}\n\n\tconvertGammaToLinear( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n * }\n */\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = attributes.tangent.array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: \n * }\n */\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options, dummy ) {\n\n\t\tif ( Number.isInteger( options ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\t\toptions = dummy;\n\n\t\t}\n\n\t\tsuper( size, size, options );\n\n\t\toptions = options || {};\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.texture._needsFlipEnvMap = false;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = 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 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 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 precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\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\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn 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\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tlightMapIrradiance *= PI;\\n\\t#endif\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_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.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\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\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\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 vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec;\\n\\t\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\t\\treflectVec = reflect( - viewDir, normal );\\n\\t\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\\t\\t\\t#endif\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= specularColorMapTexelToLinear( texture2D( specularColorMap, vUv ) ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= sheenColorMapTexelToLinear( texture2D( sheenColorMap, vUv ) ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.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}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if 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\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = 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 += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 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\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform vec2 morphTargetsTextureSize;\\n\\t\\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\\n\\t\\t\\tfloat texelIndex = float( vertexIndex * stride + offset );\\n\\t\\t\\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\\t\\t\\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\\t\\t\\treturn texture( morphTargetsTexture, morphUV ).xyz;\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#else\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = 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 * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = 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\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( float roughness, float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\\t\\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\\t\\tvec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += 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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 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\nconst fragment$9 = \"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 \\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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\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\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#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 \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"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\nconst fragment$3 = \"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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#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}\";\n\nconst fragment$2 = \"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\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_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\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\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\toutput_fragment: output_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\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_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_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\t\talphaTest: { value: 0 }\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 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // standard, physical\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_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: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 0 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 0 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\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 if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( 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() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t// private interface\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_setEncoding( uniform, texture ) {\n\n\t\t/* if ( this._renderer.capabilities.isWebGL2 === true && texture.format === RGBAFormat && texture.type === UnsignedByteType && texture.encoding === sRGBEncoding ) {\n\n\t\t\tuniform.value = ENCODINGS[ LinearEncoding ];\n\n\t\t} else {\n\n\t\t\tuniform.value = ENCODINGS[ texture.encoding ];\n\n\t\t} */\n\n\t\tuniform.value = ENCODINGS[ texture.encoding ];\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! 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\tthis._setEncoding( uniforms[ 'inputEncoding' ], texture );\n\t\tthis._setEncoding( uniforms[ 'outputEncoding' ], cubeUVRenderTarget.texture );\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\n\t\tthis._setEncoding( blurUniforms[ 'inputEncoding' ], targetIn.texture );\n\t\tthis._setEncoding( blurUniforms[ 'outputEncoding' ], targetIn.texture );\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nclass DataTexture2DArray extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector3();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst numberOfMorphTargets = geometry.morphAttributes.position.length;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== numberOfMorphTargets ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\n\t\t\t\tconst numberOfVertices = geometry.attributes.position.count;\n\t\t\t\tconst numberOfVertexData = ( hasMorphNormals === true ) ? 2 : 1; // (v,n) vs. (v)\n\n\t\t\t\tlet width = numberOfVertices * numberOfVertexData;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * numberOfMorphTargets );\n\n\t\t\t\tconst texture = new DataTexture2DArray( buffer, width, height, numberOfMorphTargets );\n\t\t\t\ttexture.format = RGBAFormat; // using RGBA since RGB might be emulated (and is thus slower)\n\t\t\t\ttexture.type = FloatType;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = numberOfVertexData * 4;\n\n\t\t\t\tfor ( let i = 0; i < numberOfMorphTargets; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\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\tentry = {\n\t\t\t\t\tcount: numberOfMorphTargets,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DataTexture3D extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\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\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _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 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\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\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// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || emptyTexture3d, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyTexture2dArray, units[ i ] );\n\n\t}\n\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 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _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 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\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\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 setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + addLineNumbers( gl.getShaderSource( shader ) );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\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.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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\t( parameters.morphTargets && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargets && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\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\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\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\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\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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\t\t\tparameters.format === RGBFormat ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.specularColorMap ? getTexelDecodingFunction( 'specularColorMapTexelToLinear', parameters.specularColorMapEncoding ) : '',\n\t\t\tparameters.sheenColorMap ? getTexelDecodingFunction( 'sheenColorMapTexelToLinear', parameters.sheenColorMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t'precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor',\n\t\t'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV',\n\t\t'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap',\n\t\t'objectSpaceNormalMap', 'tangentSpaceNormalMap',\n\t\t'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap',\n\t\t'displacementMap', 'specularMap', , 'roughnessMap', 'metalnessMap', 'gradientMap',\n\t\t'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',\n\t\t'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',\n\t\t'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'morphTargetsCount', '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'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format',\n\t\t'specularIntensityMap', 'specularColorMap', 'specularColorMapEncoding',\n\t\t'transmission', 'transmissionMap', 'thicknessMap',\n\t\t'sheen', 'sheenColorMap', 'sheenColorMapEncoding', 'sheenRoughnessMap'\n\t];\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( map && map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map && map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t} else {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t}\n\n\t\t/* if ( isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding ) {\n\n\t\t\tencoding = LinearEncoding; // disable inline decode for sRGB textures in WebGL 2\n\n\t\t} */\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\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\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\t\t\tspecularColorMapEncoding: getTextureEncodingFromMap( material.specularColorMap ),\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenColorMapEncoding: getTextureEncodingFromMap( material.sheenColorMap ),\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! object.geometry && !! object.geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! object.geometry && !! object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! 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: object.isSkinnedMesh === true && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: !! object.geometry && !! object.geometry.morphAttributes.position,\n\t\t\tmorphNormals: !! object.geometry && !! object.geometry.morphAttributes.normal,\n\t\t\tmorphTargetsCount: ( !! object.geometry && !! object.geometry.morphAttributes.position ) ? object.geometry.morphAttributes.position.length : 0,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tformat: material.format,\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\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( hashString( parameters.fragmentShader ) );\n\t\t\tarray.push( hashString( parameters.vertexShader ) );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\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\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\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: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\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 === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.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 texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.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\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\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\ttexStorage2D: texStorage2D,\n\t\ttexSubImage2D: texSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst hasMultisampledRenderToTexture = extensions.has( 'WEBGL_multisampled_render_to_texture' );\n\tconst MultisampledRenderToTextureExtension = hasMultisampledRenderToTexture ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : undefined;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && 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 ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType/*, encoding*/ ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\t//if ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding ) ? 35907 : 32856;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\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\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true ) {\n\n\t\t\t// generated mipmaps via gl.generateMipmap()\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( 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\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\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\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} 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\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\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\tconst levels = getMipLevels( texture, image, supportsMips );\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\tconst cubeImage = [];\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t} else {\n\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst image = cubeImage[ 0 ],\n\t\t\tsupportsMips = isPowerOfTwo$1( 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, texture.encoding );\n\n\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\tlet mipmaps;\n\n\t\tif ( isCompressed ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t// We assume images for cube map have the same size.\n\t\t\tgenerateMipmap( 34067 );\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, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || renderTarget.useRenderToTexture ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\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\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && renderTarget.useRenderbuffer ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 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\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && renderTarget.useRenderbuffer ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.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\tstate.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\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && texture.format === RGBFormat && ( texture.type === FloatType || texture.type === HalfFloatType ) ) {\n\n\t\t\ttexture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\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\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( renderTarget.useRenderbuffer ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\tstate.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\tstate.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, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( isRenderTarget3D ) {\n\n\t\t\t\t// Render targets containing layers, i.e: Texture 3D and 2d arrays\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tconst isTexture3D = texture.isDataTexture3D;\n\t\t\t\t\tglTextureType = isTexture3D ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.useRenderbuffer ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\t\t\t\tconst invalidationArray = [ 36064 ];\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! renderTarget.ignoreDepthForMultisampleCopy ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t}\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tif ( renderTarget.ignoreDepthForMultisampleCopy ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\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.useRenderbuffer || renderTarget.useRenderToTexture ) ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\n\t\tsetTextureCube( texture, slot );\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\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\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\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\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( 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\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\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\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tconst hasMultisampledRenderToTexture = renderer.extensions.has( 'WEBGL_multisampled_render_to_texture' );\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet isMultisample = false;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn referenceSpace;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tisMultisample = attributes.antialias;\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33189;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( attributes.alpha || isMultisample ) ? 32856 : 32849,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tif ( isMultisample ) {\n\n\t\t\t\t\t\tnewRenderTarget = new WebGLMultisampleRenderTarget(\n\t\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\t\tignoreDepth: glProjLayer.ignoreDepthValues,\n\t\t\t\t\t\t\t\tuseRenderToTexture: hasMultisampledRenderToTexture,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tformat: attributes.alpha ? RGBAFormat : RGBFormat,\n\t\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\t\tignoreDepth: glProjLayer.ignoreDepthValues,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 0 );\n\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign inputSources to available controllers\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst controller = controllers[ i ];\n\t\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\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, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t//\n\n\tconst _currentDrawBuffers = [];\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t_currentDrawBuffers[ 0 ] = 1029;\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\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.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\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\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\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\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\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\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\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\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\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\tconst needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n\t\t\tconst renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n\n\t\t\t_transmissionRenderTarget = new renderTargetType( 1024, 1024, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\twrapS: ClampToEdgeWrapping,\n\t\t\t\twrapT: ClampToEdgeWrapping,\n\t\t\t\tuseRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )\n\t\t\t} );\n\n\t\t}\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\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\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\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 and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\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 ( !! geometry && ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\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\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.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\t\tconsole.warn( 'render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTarget.useRenderToTexture = false;\n\t\t\t\t\trenderTarget.useRenderbuffer = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isDataTexture3D || texture.isDataTexture2DArray ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.useRenderbuffer ) {\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\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t_currentDrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_currentDrawBuffers.length = textures.length;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\t_currentDrawBuffers[ 0 ] = 36064;\n\t\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\t\t_currentDrawBuffers[ 0 ] = 1029;\n\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t_gl.drawBuffers( _currentDrawBuffers );\n\n\t\t\t\t} else {\n\n\t\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\tlet glFormat = utils.convert( texture.format );\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100\n\t\t\t// Not needed in Chrome 93+\n\n\t\t\tif ( glFormat === 6407 ) glFormat = 32849;\n\t\t\tif ( glFormat === 6408 ) glFormat = 32856;\n\n\t\t}\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isDataTexture3D ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataTexture2DArray ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isDataTexture3D ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nWebGLRenderer.prototype.isWebGLRenderer = true;\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.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( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.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.applyNormalMatrix( 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\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.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.transformDirection( 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( 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( 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( 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( 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( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( 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( 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( 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( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSprite.prototype.isSprite = true;\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ 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.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.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.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.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * }\n */\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\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\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nPoints.prototype.isPoints = true;\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.format = format !== undefined ? format : RGBFormat;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nVideoTexture.prototype.isVideoTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\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// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* 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( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\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( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: '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( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nSplineCurve.prototype.isSplineCurve = true;\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( 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( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( 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( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( 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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\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\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1, hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * ior: ,\n * reflectivity: ,\n *\n * sheen: ,\n * sheenColor: ,\n * sheenColorMap: new THREE.Texture( ),\n * sheenRoughness: ,\n * sheenRoughnessMap: new THREE.Texture( ),\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( ),\n *\n * thickness: ,\n * thicknessMap: new THREE.Texture( ),\n * attenuationDistance: ,\n * attenuationColor: ,\n *\n * specularIntensity: ,\n * specularIntensityMap: new THREE.Texture( ),\n * specularColor: ,\n * specularColorMap: new THREE.Texture( )\n * }\n */\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * flatShading: \n * }\n */\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * flatShading: \n * }\n */\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* 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_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\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\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\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() {\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( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.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\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.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// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.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 ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\treturn new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\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\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( stream => {\n\n\t\t\t\tconst response = new Response( stream );\n\n\t\t\t\tswitch ( this.responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, this.mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\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( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\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\tremoveEventListeners();\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\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\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\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\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\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\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\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( 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\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\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( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.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\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nRectAreaLight.prototype.isRectAreaLight = true;\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( 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( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLightProbe.prototype.isLightProbe = true;\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\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.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\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.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.format !== undefined ) material.format = json.format;\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.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( 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\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase '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: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\t\t\t\tconst image = images[ data.image ];\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( image );\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture( image.data, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\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\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.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\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.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$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( 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\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_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() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\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\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\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\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// 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( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( 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( coords, camera ) {\n\n\t\tif ( camera && camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera && camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\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( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( 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( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( 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( 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( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nclass DataUtils {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( val > 65504 ) {\n\n\t\t\tconsole.warn( 'THREE.DataUtils.toHalfFloat(): value exceeds 65504.' );\n\n\t\t\tval = 65504; // maximum representable value in float16\n\n\t\t}\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\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\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\n\n};\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\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\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\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\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\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\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nMesh.prototype.setDrawMode = function () {\n\n\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};\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\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\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\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\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\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\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\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\n\n};\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\n//\n\nfunction ParametricGeometry() {\n\n\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction TextGeometry() {\n\n\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from 'three';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\t\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update() {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerCancel );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\t\tlet zoomChanged = false;\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly() {\n\n\t\t\tconst dx = pointers[ 0 ].pageX - pointers[ 1 ].pageX;\n\t\t\tconst dy = pointers[ 0 ].pageY - pointers[ 1 ].pageY;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan();\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate();\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t removePointer( event );\n\n\t\t if ( pointers.length === 0 ) {\n\n\t\t scope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t scope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t scope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t }\n\n\t\t scope.dispatchEvent( _endEvent );\n\n\t\t state = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onPointerCancel( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\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\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\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\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ].pointerId == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointer = ( event.pointerId === pointers[ 0 ].pointerId ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointer.pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerCancel );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nclass MapControls extends OrbitControls {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper( object, domElement );\n\n\t\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\t\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\t\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\t\tthis.touches.ONE = TOUCH.PAN;\n\t\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n\t}\n\n}\n\nexport { OrbitControls, MapControls };\n","import * as THREE from 'three'\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\n\nexport default class Base {\n width: number\n height: number\n renderer!: THREE.WebGLRenderer\n scene!: THREE.Scene\n camera!: THREE.PerspectiveCamera\n controls!: OrbitControls\n\n constructor () {\n this.width = window.innerWidth\n this.height = window.innerHeight\n this.initRenderer()\n this.initScene()\n this.initCamera()\n this.initControls()\n this.render()\n }\n // 创建渲染器\n initRenderer () {\n const renderer = this.renderer = new THREE.WebGLRenderer({\n antialias: true,\n alpha: true\n })\n renderer.setSize(this.width, this.height)\n renderer.setPixelRatio(window.devicePixelRatio)\n document.body.appendChild(renderer.domElement)\n }\n // 创建场景\n initScene () {\n const scene = this.scene = new THREE.Scene()\n }\n // 创建相机\n initCamera () {\n const camera = this.camera = new THREE.PerspectiveCamera(45, this.width / this.height, 0.1, 100)\n camera.position.set(15, 15, 15)\n camera.lookAt(0, 0, 0)\n }\n // 创建光源\n initLight (color = 0xffffff) {\n const ambientLight = new THREE.AmbientLight(color)\n this.scene.add(ambientLight)\n }\n // 轨道控制器\n initControls () {\n const { renderer, camera } = this\n const controls = this.controls = new OrbitControls(camera, renderer.domElement)\n controls.target = new THREE.Vector3(0, 0, 0)\n controls.enableZoom = false\n controls.rotateSpeed = 1\n controls.update()\n }\n // 渲染\n render () {\n const { renderer, scene, camera } = this\n this.controls.update()\n renderer.clear()\n renderer.render(scene, camera)\n window.requestAnimationFrame(() => {\n this.render()\n })\n }\n}\n","import * as THREE from 'three'\nimport { LOGO } from './config'\n\nexport const rotateAroundWorldAxis = (origin: THREE.Vector3, vector: THREE.Vector3, radius: number) => {\n vector.normalize()\n const u = vector.x\n const v = vector.y\n const w = vector.z\n const a = origin.x\n const b = origin.y\n const c = origin.z\n const matrix4 = new THREE.Matrix4()\n matrix4.set(\n u * u + (v * v + w * w) * Math.cos(radius), u * v * (1 - Math.cos(radius)) - w * Math.sin(radius), u * w * (1 - Math.cos(radius)) + v * Math.sin(radius), (a * (v * v + w * w) - u * (b * v + c * w)) * (1 - Math.cos(radius)) + (b * w - c * v) * Math.sin(radius),\n u * v * (1 - Math.cos(radius)) + w * Math.sin(radius), v * v + (u * u + w * w) * Math.cos(radius), v * w * (1 - Math.cos(radius)) - u * Math.sin(radius), (b * (u * u + w * w) - v * (a * u + c * w)) * (1 - Math.cos(radius)) + (c * u - a * w) * Math.sin(radius),\n u * w * (1 - Math.cos(radius)) - v * Math.sin(radius), v * w * (1 - Math.cos(radius)) + u * Math.sin(radius), w * w + (u * u + v * v) * Math.cos(radius), (c * (u * u + v * v) - w * (a * u + b * v)) * (1 - Math.cos(radius)) + (a * v - b * u) * Math.sin(radius),\n 0, 0, 0, 1\n ) \n return matrix4\n}\n\nexport enum AxesEnum { x, y, z }\n\nexport const XYZ_VALUE = 0 ^ 1 ^ 2\n\nexport const AxesVec3 = {\n 'x+': new THREE.Vector3(1, 0, 0),\n 'x-': new THREE.Vector3(-1, 0, 0),\n 'y+': new THREE.Vector3(0, 1, 0),\n 'y-': new THREE.Vector3(0, -1, 0),\n 'z+': new THREE.Vector3(0, 0, 1),\n 'z-': new THREE.Vector3(0, 0, -1)\n}\n\nconst roundRectByArc = (ctx: CanvasRenderingContext2D, ...[x, y, w, h, r]: number[]) => {\n const min = Math.min(w, h), PI = Math.PI\n if (r > min / 2) r = min / 2\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.lineTo(x + r, y)\n ctx.lineTo(x + w - r, y)\n ctx.arc(x + w - r, y + r, r, -PI / 2, 0)\n ctx.lineTo(x + w, y + h - r)\n ctx.arc(x + w - r, y + h - r, r, 0, PI / 2)\n ctx.lineTo(x + r, y + h)\n ctx.arc(x + r, y + h - r, r, PI / 2, PI)\n ctx.lineTo(x, y + r)\n ctx.arc(x + r, y + r, r, PI, -PI / 2)\n ctx.closePath()\n}\n\nexport const colors = [\n '#3b81f5', // 蓝色\n '#029c56', // 绿色\n '#d94335', // 红色\n '#e66f00', // 橘色\n '#f3b30a', // 黄色\n '#f4f4f4', // 白色\n]\n\nexport const getFaceColor = (\n color: string,\n radius = 10,\n gutter = 5,\n gutterColor = '#000',\n text = ''\n): HTMLCanvasElement => {\n const size = 256\n const canvas = document.createElement('canvas')\n canvas.width = canvas.height = size\n const ctx = canvas.getContext('2d')!\n ctx.fillStyle = gutterColor\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n roundRectByArc(ctx, gutter, gutter, size - gutter * 2, size - gutter * 2, radius)\n ctx.fill()\n if (text) {\n ctx.fillStyle = gutterColor\n const h = size / 2\n ctx.font = `${h}px Microsoft YaHei`\n ctx.textBaseline = 'top'\n const w = ctx.measureText(text).width\n ctx.fillText(text, size / 2 - w / 2, size / 2 - h / 2)\n }\n return canvas\n // else return new Promise((resolve, reject) => {\n // const img = new Image()\n // img.onload = () => {\n // ctx.drawImage(img, 0, 0, size, size)\n // resolve(canvas)\n // }\n // img.src = LOGO\n // })\n}\n","/*! Tweakpane 3.0.7 (c) 2016 cocopon, licensed under the MIT license. */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Tweakpane = {}));\n})(this, (function (exports) { 'use strict';\n\n /***\n * A simple semantic versioning perser.\n */\n class Semver {\n /**\n * @hidden\n */\n constructor(text) {\n const [core, prerelease] = text.split('-');\n const coreComps = core.split('.');\n this.major = parseInt(coreComps[0], 10);\n this.minor = parseInt(coreComps[1], 10);\n this.patch = parseInt(coreComps[2], 10);\n this.prerelease = prerelease !== null && prerelease !== void 0 ? prerelease : null;\n }\n toString() {\n const core = [this.major, this.minor, this.patch].join('.');\n return this.prerelease !== null ? [core, this.prerelease].join('-') : core;\n }\n }\n\n class BladeApi {\n constructor(controller) {\n this.controller_ = controller;\n }\n get disabled() {\n return this.controller_.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller_.viewProps.set('disabled', disabled);\n }\n get hidden() {\n return this.controller_.viewProps.get('hidden');\n }\n set hidden(hidden) {\n this.controller_.viewProps.set('hidden', hidden);\n }\n dispose() {\n this.controller_.viewProps.set('disposed', true);\n }\n }\n\n class TpEvent {\n constructor(target) {\n this.target = target;\n }\n }\n class TpChangeEvent extends TpEvent {\n constructor(target, value, presetKey, last) {\n super(target);\n this.value = value;\n this.presetKey = presetKey;\n this.last = last !== null && last !== void 0 ? last : true;\n }\n }\n class TpUpdateEvent extends TpEvent {\n constructor(target, value, presetKey) {\n super(target);\n this.value = value;\n this.presetKey = presetKey;\n }\n }\n class TpFoldEvent extends TpEvent {\n constructor(target, expanded) {\n super(target);\n this.expanded = expanded;\n }\n }\n\n function forceCast(v) {\n return v;\n }\n function isEmpty(value) {\n return value === null || value === undefined;\n }\n function deepEqualsArray(a1, a2) {\n if (a1.length !== a2.length) {\n return false;\n }\n for (let i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) {\n return false;\n }\n }\n return true;\n }\n\n const CREATE_MESSAGE_MAP = {\n alreadydisposed: () => 'View has been already disposed',\n invalidparams: (context) => `Invalid parameters for '${context.name}'`,\n nomatchingcontroller: (context) => `No matching controller for '${context.key}'`,\n nomatchingview: (context) => `No matching view for '${JSON.stringify(context.params)}'`,\n notbindable: () => `Value is not bindable`,\n propertynotfound: (context) => `Property '${context.name}' not found`,\n shouldneverhappen: () => 'This error should never happen',\n };\n class TpError {\n constructor(config) {\n var _a;\n this.message =\n (_a = CREATE_MESSAGE_MAP[config.type](forceCast(config.context))) !== null && _a !== void 0 ? _a : 'Unexpected error';\n this.name = this.constructor.name;\n this.stack = new Error(this.message).stack;\n this.type = config.type;\n }\n static alreadyDisposed() {\n return new TpError({ type: 'alreadydisposed' });\n }\n static notBindable() {\n return new TpError({\n type: 'notbindable',\n });\n }\n static propertyNotFound(name) {\n return new TpError({\n type: 'propertynotfound',\n context: {\n name: name,\n },\n });\n }\n static shouldNeverHappen() {\n return new TpError({ type: 'shouldneverhappen' });\n }\n }\n\n class BindingTarget {\n constructor(obj, key, opt_id) {\n this.obj_ = obj;\n this.key_ = key;\n this.presetKey_ = opt_id !== null && opt_id !== void 0 ? opt_id : key;\n }\n static isBindable(obj) {\n if (obj === null) {\n return false;\n }\n if (typeof obj !== 'object') {\n return false;\n }\n return true;\n }\n get key() {\n return this.key_;\n }\n get presetKey() {\n return this.presetKey_;\n }\n read() {\n return this.obj_[this.key_];\n }\n write(value) {\n this.obj_[this.key_] = value;\n }\n writeProperty(name, value) {\n const valueObj = this.read();\n if (!BindingTarget.isBindable(valueObj)) {\n throw TpError.notBindable();\n }\n if (!(name in valueObj)) {\n throw TpError.propertyNotFound(name);\n }\n valueObj[name] = value;\n }\n }\n\n class ButtonApi extends BladeApi {\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get title() {\n var _a;\n return (_a = this.controller_.valueController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.valueController.props.set('title', title);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller_.valueController.emitter;\n emitter.on(eventName, () => {\n bh(new TpEvent(this));\n });\n return this;\n }\n }\n\n class Emitter {\n constructor() {\n this.observers_ = {};\n }\n on(eventName, handler) {\n let observers = this.observers_[eventName];\n if (!observers) {\n observers = this.observers_[eventName] = [];\n }\n observers.push({\n handler: handler,\n });\n return this;\n }\n off(eventName, handler) {\n const observers = this.observers_[eventName];\n if (observers) {\n this.observers_[eventName] = observers.filter((observer) => {\n return observer.handler !== handler;\n });\n }\n return this;\n }\n emit(eventName, event) {\n const observers = this.observers_[eventName];\n if (!observers) {\n return;\n }\n observers.forEach((observer) => {\n observer.handler(event);\n });\n }\n }\n\n const PREFIX = 'tp';\n function ClassName(viewName) {\n const fn = (opt_elementName, opt_modifier) => {\n return [\n PREFIX,\n '-',\n viewName,\n 'v',\n opt_elementName ? `_${opt_elementName}` : '',\n opt_modifier ? `-${opt_modifier}` : '',\n ].join('');\n };\n return fn;\n }\n\n function compose(h1, h2) {\n return (input) => h2(h1(input));\n }\n function extractValue(ev) {\n return ev.rawValue;\n }\n function bindValue(value, applyValue) {\n value.emitter.on('change', compose(extractValue, applyValue));\n applyValue(value.rawValue);\n }\n function bindValueMap(valueMap, key, applyValue) {\n bindValue(valueMap.value(key), applyValue);\n }\n\n function applyClass(elem, className, active) {\n if (active) {\n elem.classList.add(className);\n }\n else {\n elem.classList.remove(className);\n }\n }\n function valueToClassName(elem, className) {\n return (value) => {\n applyClass(elem, className, value);\n };\n }\n function bindValueToTextContent(value, elem) {\n bindValue(value, (text) => {\n elem.textContent = text !== null && text !== void 0 ? text : '';\n });\n }\n\n const className$q = ClassName('btn');\n class ButtonView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$q());\n config.viewProps.bindClassModifiers(this.element);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$q('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(className$q('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n }\n }\n\n class ButtonController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new ButtonView(doc, {\n props: this.props,\n viewProps: this.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n }\n\n class BoundValue {\n constructor(initialValue, config) {\n var _a;\n this.constraint_ = config === null || config === void 0 ? void 0 : config.constraint;\n this.equals_ = (_a = config === null || config === void 0 ? void 0 : config.equals) !== null && _a !== void 0 ? _a : ((v1, v2) => v1 === v2);\n this.emitter = new Emitter();\n this.rawValue_ = initialValue;\n }\n get constraint() {\n return this.constraint_;\n }\n get rawValue() {\n return this.rawValue_;\n }\n set rawValue(rawValue) {\n this.setRawValue(rawValue, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(rawValue, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const constrainedValue = this.constraint_\n ? this.constraint_.constrain(rawValue)\n : rawValue;\n const changed = !this.equals_(this.rawValue_, constrainedValue);\n if (!changed && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.rawValue_ = constrainedValue;\n this.emitter.emit('change', {\n options: opts,\n rawValue: constrainedValue,\n sender: this,\n });\n }\n }\n\n class PrimitiveValue {\n constructor(initialValue) {\n this.emitter = new Emitter();\n this.value_ = initialValue;\n }\n get rawValue() {\n return this.value_;\n }\n set rawValue(value) {\n this.setRawValue(value, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(value, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n if (this.value_ === value && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.value_ = value;\n this.emitter.emit('change', {\n options: opts,\n rawValue: this.value_,\n sender: this,\n });\n }\n }\n\n function createValue(initialValue, config) {\n const constraint = config === null || config === void 0 ? void 0 : config.constraint;\n const equals = config === null || config === void 0 ? void 0 : config.equals;\n if (!constraint && !equals) {\n return new PrimitiveValue(initialValue);\n }\n return new BoundValue(initialValue, config);\n }\n\n class ValueMap {\n constructor(valueMap) {\n this.emitter = new Emitter();\n this.valMap_ = valueMap;\n for (const key in this.valMap_) {\n const v = this.valMap_[key];\n v.emitter.on('change', () => {\n this.emitter.emit('change', {\n key: key,\n sender: this,\n });\n });\n }\n }\n static createCore(initialValue) {\n const keys = Object.keys(initialValue);\n return keys.reduce((o, key) => {\n return Object.assign(o, {\n [key]: createValue(initialValue[key]),\n });\n }, {});\n }\n static fromObject(initialValue) {\n const core = this.createCore(initialValue);\n return new ValueMap(core);\n }\n get(key) {\n return this.valMap_[key].rawValue;\n }\n set(key, value) {\n this.valMap_[key].rawValue = value;\n }\n value(key) {\n return this.valMap_[key];\n }\n }\n\n function parseObject(value, keyToParserMap) {\n const keys = Object.keys(keyToParserMap);\n const result = keys.reduce((tmp, key) => {\n if (tmp === undefined) {\n return undefined;\n }\n const parser = keyToParserMap[key];\n const result = parser(value[key]);\n return result.succeeded\n ? Object.assign(Object.assign({}, tmp), { [key]: result.value }) : undefined;\n }, {});\n return forceCast(result);\n }\n function parseArray(value, parseItem) {\n return value.reduce((tmp, item) => {\n if (tmp === undefined) {\n return undefined;\n }\n const result = parseItem(item);\n if (!result.succeeded || result.value === undefined) {\n return undefined;\n }\n return [...tmp, result.value];\n }, []);\n }\n function isObject(value) {\n if (value === null) {\n return false;\n }\n return typeof value === 'object';\n }\n function createParamsParserBuilder(parse) {\n return (optional) => (v) => {\n if (!optional && v === undefined) {\n return {\n succeeded: false,\n value: undefined,\n };\n }\n if (optional && v === undefined) {\n return {\n succeeded: true,\n value: undefined,\n };\n }\n const result = parse(v);\n return result !== undefined\n ? {\n succeeded: true,\n value: result,\n }\n : {\n succeeded: false,\n value: undefined,\n };\n };\n }\n function createParamsParserBuilders(optional) {\n return {\n custom: (parse) => createParamsParserBuilder(parse)(optional),\n boolean: createParamsParserBuilder((v) => typeof v === 'boolean' ? v : undefined)(optional),\n number: createParamsParserBuilder((v) => typeof v === 'number' ? v : undefined)(optional),\n string: createParamsParserBuilder((v) => typeof v === 'string' ? v : undefined)(optional),\n function: createParamsParserBuilder((v) =>\n typeof v === 'function' ? v : undefined)(optional),\n constant: (value) => createParamsParserBuilder((v) => (v === value ? value : undefined))(optional),\n raw: createParamsParserBuilder((v) => v)(optional),\n object: (keyToParserMap) => createParamsParserBuilder((v) => {\n if (!isObject(v)) {\n return undefined;\n }\n return parseObject(v, keyToParserMap);\n })(optional),\n array: (itemParser) => createParamsParserBuilder((v) => {\n if (!Array.isArray(v)) {\n return undefined;\n }\n return parseArray(v, itemParser);\n })(optional),\n };\n }\n const ParamsParsers = {\n optional: createParamsParserBuilders(true),\n required: createParamsParserBuilders(false),\n };\n function parseParams(value, keyToParserMap) {\n const result = ParamsParsers.required.object(keyToParserMap)(value);\n return result.succeeded ? result.value : undefined;\n }\n\n function disposeElement(elem) {\n if (elem && elem.parentElement) {\n elem.parentElement.removeChild(elem);\n }\n return null;\n }\n\n function getAllBladePositions() {\n return ['veryfirst', 'first', 'last', 'verylast'];\n }\n\n const className$p = ClassName('');\n const POS_TO_CLASS_NAME_MAP = {\n veryfirst: 'vfst',\n first: 'fst',\n last: 'lst',\n verylast: 'vlst',\n };\n class BladeController {\n constructor(config) {\n this.parent_ = null;\n this.blade = config.blade;\n this.view = config.view;\n this.viewProps = config.viewProps;\n const elem = this.view.element;\n this.blade.value('positions').emitter.on('change', () => {\n getAllBladePositions().forEach((pos) => {\n elem.classList.remove(className$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n this.blade.get('positions').forEach((pos) => {\n elem.classList.add(className$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n });\n this.viewProps.handleDispose(() => {\n disposeElement(elem);\n });\n }\n get parent() {\n return this.parent_;\n }\n }\n\n const SVG_NS = 'http://www.w3.org/2000/svg';\n function forceReflow(element) {\n element.offsetHeight;\n }\n function disableTransitionTemporarily(element, callback) {\n const t = element.style.transition;\n element.style.transition = 'none';\n callback();\n element.style.transition = t;\n }\n function supportsTouch(doc) {\n return doc.ontouchstart !== undefined;\n }\n function getGlobalObject() {\n return new Function('return this')();\n }\n function getWindowDocument() {\n const globalObj = forceCast(getGlobalObject());\n return globalObj.document;\n }\n function getCanvasContext(canvasElement) {\n const win = canvasElement.ownerDocument.defaultView;\n if (!win) {\n return null;\n }\n const isBrowser = 'document' in win;\n return isBrowser ? canvasElement.getContext('2d') : null;\n }\n const ICON_ID_TO_INNER_HTML_MAP = {\n check: '',\n dropdown: '',\n p2dpad: '',\n };\n function createSvgIconElement(document, iconId) {\n const elem = document.createElementNS(SVG_NS, 'svg');\n elem.innerHTML = ICON_ID_TO_INNER_HTML_MAP[iconId];\n return elem;\n }\n function insertElementAt(parentElement, element, index) {\n parentElement.insertBefore(element, parentElement.children[index]);\n }\n function removeElement(element) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n function removeChildElements(element) {\n while (element.children.length > 0) {\n element.removeChild(element.children[0]);\n }\n }\n function removeChildNodes(element) {\n while (element.childNodes.length > 0) {\n element.removeChild(element.childNodes[0]);\n }\n }\n function findNextTarget(ev) {\n if (ev.relatedTarget) {\n return forceCast(ev.relatedTarget);\n }\n if ('explicitOriginalTarget' in ev) {\n return ev.explicitOriginalTarget;\n }\n return null;\n }\n\n const className$o = ClassName('lbl');\n function createLabelNode(doc, label) {\n const frag = doc.createDocumentFragment();\n const lineNodes = label.split('\\n').map((line) => {\n return doc.createTextNode(line);\n });\n lineNodes.forEach((lineNode, index) => {\n if (index > 0) {\n frag.appendChild(doc.createElement('br'));\n }\n frag.appendChild(lineNode);\n });\n return frag;\n }\n class LabelView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$o());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('div');\n labelElem.classList.add(className$o('l'));\n bindValueMap(config.props, 'label', (value) => {\n if (isEmpty(value)) {\n this.element.classList.add(className$o(undefined, 'nol'));\n }\n else {\n this.element.classList.remove(className$o(undefined, 'nol'));\n removeChildNodes(labelElem);\n labelElem.appendChild(createLabelNode(doc, value));\n }\n });\n this.element.appendChild(labelElem);\n this.labelElement = labelElem;\n const valueElem = doc.createElement('div');\n valueElem.classList.add(className$o('v'));\n this.element.appendChild(valueElem);\n this.valueElement = valueElem;\n }\n }\n\n class LabelController extends BladeController {\n constructor(doc, config) {\n const viewProps = config.valueController.viewProps;\n super(Object.assign(Object.assign({}, config), { view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.props = config.props;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n }\n\n const ButtonBladePlugin = {\n id: 'button',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n title: p.required.string,\n view: p.required.constant('button'),\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new LabelController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: new ButtonController(args.document, {\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n }),\n });\n },\n api(args) {\n if (!(args.controller instanceof LabelController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof ButtonController)) {\n return null;\n }\n return new ButtonApi(args.controller);\n },\n };\n\n class ValueBladeController extends BladeController {\n constructor(config) {\n super(config);\n this.value = config.value;\n }\n }\n\n function createBlade() {\n return new ValueMap({\n positions: createValue([], {\n equals: deepEqualsArray,\n }),\n });\n }\n\n class Foldable extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(expanded) {\n const coreObj = {\n completed: true,\n expanded: expanded,\n expandedHeight: null,\n shouldFixHeight: false,\n temporaryExpanded: null,\n };\n const core = ValueMap.createCore(coreObj);\n return new Foldable(core);\n }\n get styleExpanded() {\n var _a;\n return (_a = this.get('temporaryExpanded')) !== null && _a !== void 0 ? _a : this.get('expanded');\n }\n get styleHeight() {\n if (!this.styleExpanded) {\n return '0';\n }\n const exHeight = this.get('expandedHeight');\n if (this.get('shouldFixHeight') && !isEmpty(exHeight)) {\n return `${exHeight}px`;\n }\n return 'auto';\n }\n bindExpandedClass(elem, expandedClassName) {\n bindValueMap(this, 'expanded', () => {\n const expanded = this.styleExpanded;\n if (expanded) {\n elem.classList.add(expandedClassName);\n }\n else {\n elem.classList.remove(expandedClassName);\n }\n });\n }\n }\n function computeExpandedFolderHeight(folder, containerElement) {\n let height = 0;\n disableTransitionTemporarily(containerElement, () => {\n folder.set('expandedHeight', null);\n folder.set('temporaryExpanded', true);\n forceReflow(containerElement);\n height = containerElement.clientHeight;\n folder.set('temporaryExpanded', null);\n forceReflow(containerElement);\n });\n return height;\n }\n function applyHeight(foldable, elem) {\n elem.style.height = foldable.styleHeight;\n }\n function bindFoldable(foldable, elem) {\n foldable.value('expanded').emitter.on('beforechange', () => {\n foldable.set('completed', false);\n if (isEmpty(foldable.get('expandedHeight'))) {\n foldable.set('expandedHeight', computeExpandedFolderHeight(foldable, elem));\n }\n foldable.set('shouldFixHeight', true);\n forceReflow(elem);\n });\n foldable.emitter.on('change', () => {\n applyHeight(foldable, elem);\n });\n applyHeight(foldable, elem);\n elem.addEventListener('transitionend', (ev) => {\n if (ev.propertyName !== 'height') {\n return;\n }\n foldable.set('shouldFixHeight', false);\n foldable.set('expandedHeight', null);\n foldable.set('completed', true);\n });\n }\n\n class RackLikeApi extends BladeApi {\n constructor(controller, rackApi) {\n super(controller);\n this.rackApi_ = rackApi;\n }\n }\n\n function addButtonAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'button' }));\n }\n function addFolderAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'folder' }));\n }\n function addSeparatorAsBlade(api, opt_params) {\n const params = opt_params || {};\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'separator' }));\n }\n function addTabAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'tab' }));\n }\n\n class NestedOrderedSet {\n constructor(extract) {\n this.emitter = new Emitter();\n this.items_ = [];\n this.cache_ = new Set();\n this.onSubListAdd_ = this.onSubListAdd_.bind(this);\n this.onSubListRemove_ = this.onSubListRemove_.bind(this);\n this.extract_ = extract;\n }\n get items() {\n return this.items_;\n }\n allItems() {\n return Array.from(this.cache_);\n }\n find(callback) {\n for (const item of this.allItems()) {\n if (callback(item)) {\n return item;\n }\n }\n return null;\n }\n includes(item) {\n return this.cache_.has(item);\n }\n add(item, opt_index) {\n if (this.includes(item)) {\n throw TpError.shouldNeverHappen();\n }\n const index = opt_index !== undefined ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n this.cache_.add(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.on('add', this.onSubListAdd_);\n subList.emitter.on('remove', this.onSubListRemove_);\n subList.allItems().forEach((item) => {\n this.cache_.add(item);\n });\n }\n this.emitter.emit('add', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n this.cache_.delete(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.off('add', this.onSubListAdd_);\n subList.emitter.off('remove', this.onSubListRemove_);\n }\n this.emitter.emit('remove', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n onSubListAdd_(ev) {\n this.cache_.add(ev.item);\n this.emitter.emit('add', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n onSubListRemove_(ev) {\n this.cache_.delete(ev.item);\n this.emitter.emit('remove', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n }\n\n class InputBindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onBindingChange_ = this.onBindingChange_.bind(this);\n this.emitter_ = new Emitter();\n this.controller_.binding.emitter.on('change', this.onBindingChange_);\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n refresh() {\n this.controller_.binding.read();\n }\n onBindingChange_(ev) {\n const value = ev.sender.target.read();\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, forceCast(value), this.controller_.binding.target.presetKey, ev.options.last),\n });\n }\n }\n\n class InputBindingController extends LabelController {\n constructor(doc, config) {\n super(doc, config);\n this.binding = config.binding;\n }\n }\n\n class MonitorBindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onBindingUpdate_ = this.onBindingUpdate_.bind(this);\n this.emitter_ = new Emitter();\n this.controller_.binding.emitter.on('update', this.onBindingUpdate_);\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n refresh() {\n this.controller_.binding.read();\n }\n onBindingUpdate_(ev) {\n const value = ev.sender.target.read();\n this.emitter_.emit('update', {\n event: new TpUpdateEvent(this, forceCast(value), this.controller_.binding.target.presetKey),\n });\n }\n }\n\n class MonitorBindingController extends LabelController {\n constructor(doc, config) {\n super(doc, config);\n this.binding = config.binding;\n this.viewProps.bindDisabled(this.binding.ticker);\n this.viewProps.handleDispose(() => {\n this.binding.dispose();\n });\n }\n }\n\n function findSubBladeApiSet(api) {\n if (api instanceof RackApi) {\n return api['apiSet_'];\n }\n if (api instanceof RackLikeApi) {\n return api['rackApi_']['apiSet_'];\n }\n return null;\n }\n function getApiByController(apiSet, controller) {\n const api = apiSet.find((api) => api.controller_ === controller);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n function createBindingTarget(obj, key, opt_id) {\n if (!BindingTarget.isBindable(obj)) {\n throw TpError.notBindable();\n }\n return new BindingTarget(obj, key, opt_id);\n }\n class RackApi extends BladeApi {\n constructor(controller, pool) {\n super(controller);\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n this.onRackInputChange_ = this.onRackInputChange_.bind(this);\n this.onRackMonitorUpdate_ = this.onRackMonitorUpdate_.bind(this);\n this.emitter_ = new Emitter();\n this.apiSet_ = new NestedOrderedSet(findSubBladeApiSet);\n this.pool_ = pool;\n const rack = this.controller_.rack;\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n rack.emitter.on('inputchange', this.onRackInputChange_);\n rack.emitter.on('monitorupdate', this.onRackMonitorUpdate_);\n rack.children.forEach((bc) => {\n this.setUpApi_(bc);\n });\n }\n get children() {\n return this.controller_.rack.children.map((bc) => getApiByController(this.apiSet_, bc));\n }\n addInput(object, key, opt_params) {\n const params = opt_params || {};\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createInput(doc, createBindingTarget(object, key, params.presetKey), params);\n const api = new InputBindingApi(bc);\n return this.add(api, params.index);\n }\n addMonitor(object, key, opt_params) {\n const params = opt_params || {};\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createMonitor(doc, createBindingTarget(object, key), params);\n const api = new MonitorBindingApi(bc);\n return forceCast(this.add(api, params.index));\n }\n addFolder(params) {\n return addFolderAsBlade(this, params);\n }\n addButton(params) {\n return addButtonAsBlade(this, params);\n }\n addSeparator(opt_params) {\n return addSeparatorAsBlade(this, opt_params);\n }\n addTab(params) {\n return addTabAsBlade(this, params);\n }\n add(api, opt_index) {\n this.controller_.rack.add(api.controller_, opt_index);\n const gapi = this.apiSet_.find((a) => a.controller_ === api.controller_);\n if (gapi) {\n this.apiSet_.remove(gapi);\n }\n this.apiSet_.add(api);\n return api;\n }\n remove(api) {\n this.controller_.rack.remove(api.controller_);\n }\n addBlade(params) {\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createBlade(doc, params);\n const api = this.pool_.createBladeApi(bc);\n return this.add(api, params.index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n setUpApi_(bc) {\n const api = this.apiSet_.find((api) => api.controller_ === bc);\n if (!api) {\n this.apiSet_.add(this.pool_.createBladeApi(bc));\n }\n }\n onRackAdd_(ev) {\n this.setUpApi_(ev.bladeController);\n }\n onRackRemove_(ev) {\n if (ev.isRoot) {\n const api = getApiByController(this.apiSet_, ev.bladeController);\n this.apiSet_.remove(api);\n }\n }\n onRackInputChange_(ev) {\n const bc = ev.bladeController;\n if (bc instanceof InputBindingController) {\n const api = getApiByController(this.apiSet_, bc);\n const binding = bc.binding;\n this.emitter_.emit('change', {\n event: new TpChangeEvent(api, forceCast(binding.target.read()), binding.target.presetKey, ev.options.last),\n });\n }\n else if (bc instanceof ValueBladeController) {\n const api = getApiByController(this.apiSet_, bc);\n this.emitter_.emit('change', {\n event: new TpChangeEvent(api, bc.value.rawValue, undefined, ev.options.last),\n });\n }\n }\n onRackMonitorUpdate_(ev) {\n if (!(ev.bladeController instanceof MonitorBindingController)) {\n throw TpError.shouldNeverHappen();\n }\n const api = getApiByController(this.apiSet_, ev.bladeController);\n const binding = ev.bladeController.binding;\n this.emitter_.emit('update', {\n event: new TpUpdateEvent(api, forceCast(binding.target.read()), binding.target.presetKey),\n });\n }\n }\n\n class FolderApi extends RackLikeApi {\n constructor(controller, pool) {\n super(controller, new RackApi(controller.rackController, pool));\n this.emitter_ = new Emitter();\n this.controller_.foldable\n .value('expanded')\n .emitter.on('change', (ev) => {\n this.emitter_.emit('fold', {\n event: new TpFoldEvent(this, ev.sender.rawValue),\n });\n });\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: ev,\n });\n });\n this.rackApi_.on('update', (ev) => {\n this.emitter_.emit('update', {\n event: ev,\n });\n });\n }\n get expanded() {\n return this.controller_.foldable.get('expanded');\n }\n set expanded(expanded) {\n this.controller_.foldable.set('expanded', expanded);\n }\n get title() {\n return this.controller_.props.get('title');\n }\n set title(title) {\n this.controller_.props.set('title', title);\n }\n get children() {\n return this.rackApi_.children;\n }\n addInput(object, key, opt_params) {\n return this.rackApi_.addInput(object, key, opt_params);\n }\n addMonitor(object, key, opt_params) {\n return this.rackApi_.addMonitor(object, key, opt_params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addSeparator(opt_params) {\n return this.rackApi_.addSeparator(opt_params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n return this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class RackLikeController extends BladeController {\n constructor(config) {\n super({\n blade: config.blade,\n view: config.view,\n viewProps: config.rackController.viewProps,\n });\n this.rackController = config.rackController;\n }\n }\n\n class PlainView {\n constructor(doc, config) {\n const className = ClassName(config.viewName);\n this.element = doc.createElement('div');\n this.element.classList.add(className());\n config.viewProps.bindClassModifiers(this.element);\n }\n }\n\n function findInputBindingController(bcs, b) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof InputBindingController && bc.binding === b) {\n return bc;\n }\n }\n return null;\n }\n function findMonitorBindingController(bcs, b) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof MonitorBindingController && bc.binding === b) {\n return bc;\n }\n }\n return null;\n }\n function findValueBladeController(bcs, v) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof ValueBladeController && bc.value === v) {\n return bc;\n }\n }\n return null;\n }\n function findSubRack(bc) {\n if (bc instanceof RackController) {\n return bc.rack;\n }\n if (bc instanceof RackLikeController) {\n return bc.rackController.rack;\n }\n return null;\n }\n function findSubBladeControllerSet(bc) {\n const rack = findSubRack(bc);\n return rack ? rack['bcSet_'] : null;\n }\n class BladeRack {\n constructor(blade) {\n var _a;\n this.onBladePositionsChange_ = this.onBladePositionsChange_.bind(this);\n this.onSetAdd_ = this.onSetAdd_.bind(this);\n this.onSetRemove_ = this.onSetRemove_.bind(this);\n this.onChildDispose_ = this.onChildDispose_.bind(this);\n this.onChildPositionsChange_ = this.onChildPositionsChange_.bind(this);\n this.onChildInputChange_ = this.onChildInputChange_.bind(this);\n this.onChildMonitorUpdate_ = this.onChildMonitorUpdate_.bind(this);\n this.onChildValueChange_ = this.onChildValueChange_.bind(this);\n this.onChildViewPropsChange_ = this.onChildViewPropsChange_.bind(this);\n this.onDescendantLayout_ = this.onDescendantLayout_.bind(this);\n this.onDescendantInputChange_ = this.onDescendantInputChange_.bind(this);\n this.onDescendantMonitorUpdate_ =\n this.onDescendantMonitorUpdate_.bind(this);\n this.emitter = new Emitter();\n this.blade_ = blade !== null && blade !== void 0 ? blade : null;\n (_a = this.blade_) === null || _a === void 0 ? void 0 : _a.value('positions').emitter.on('change', this.onBladePositionsChange_);\n this.bcSet_ = new NestedOrderedSet(findSubBladeControllerSet);\n this.bcSet_.emitter.on('add', this.onSetAdd_);\n this.bcSet_.emitter.on('remove', this.onSetRemove_);\n }\n get children() {\n return this.bcSet_.items;\n }\n add(bc, opt_index) {\n if (bc.parent) {\n bc.parent.remove(bc);\n }\n bc['parent_'] = this;\n this.bcSet_.add(bc, opt_index);\n }\n remove(bc) {\n bc['parent_'] = null;\n this.bcSet_.remove(bc);\n }\n find(controllerClass) {\n return forceCast(this.bcSet_.allItems().filter((bc) => {\n return bc instanceof controllerClass;\n }));\n }\n onSetAdd_(ev) {\n this.updatePositions_();\n const isRoot = ev.target === ev.root;\n this.emitter.emit('add', {\n bladeController: ev.item,\n index: ev.index,\n isRoot: isRoot,\n sender: this,\n });\n if (!isRoot) {\n return;\n }\n const bc = ev.item;\n bc.viewProps.emitter.on('change', this.onChildViewPropsChange_);\n bc.blade\n .value('positions')\n .emitter.on('change', this.onChildPositionsChange_);\n bc.viewProps.handleDispose(this.onChildDispose_);\n if (bc instanceof InputBindingController) {\n bc.binding.emitter.on('change', this.onChildInputChange_);\n }\n else if (bc instanceof MonitorBindingController) {\n bc.binding.emitter.on('update', this.onChildMonitorUpdate_);\n }\n else if (bc instanceof ValueBladeController) {\n bc.value.emitter.on('change', this.onChildValueChange_);\n }\n else {\n const rack = findSubRack(bc);\n if (rack) {\n const emitter = rack.emitter;\n emitter.on('layout', this.onDescendantLayout_);\n emitter.on('inputchange', this.onDescendantInputChange_);\n emitter.on('monitorupdate', this.onDescendantMonitorUpdate_);\n }\n }\n }\n onSetRemove_(ev) {\n this.updatePositions_();\n const isRoot = ev.target === ev.root;\n this.emitter.emit('remove', {\n bladeController: ev.item,\n isRoot: isRoot,\n sender: this,\n });\n if (!isRoot) {\n return;\n }\n const bc = ev.item;\n if (bc instanceof InputBindingController) {\n bc.binding.emitter.off('change', this.onChildInputChange_);\n }\n else if (bc instanceof MonitorBindingController) {\n bc.binding.emitter.off('update', this.onChildMonitorUpdate_);\n }\n else if (bc instanceof ValueBladeController) {\n bc.value.emitter.off('change', this.onChildValueChange_);\n }\n else {\n const rack = findSubRack(bc);\n if (rack) {\n const emitter = rack.emitter;\n emitter.off('layout', this.onDescendantLayout_);\n emitter.off('inputchange', this.onDescendantInputChange_);\n emitter.off('monitorupdate', this.onDescendantMonitorUpdate_);\n }\n }\n }\n updatePositions_() {\n const visibleItems = this.bcSet_.items.filter((bc) => !bc.viewProps.get('hidden'));\n const firstVisibleItem = visibleItems[0];\n const lastVisibleItem = visibleItems[visibleItems.length - 1];\n this.bcSet_.items.forEach((bc) => {\n const ps = [];\n if (bc === firstVisibleItem) {\n ps.push('first');\n if (!this.blade_ ||\n this.blade_.get('positions').includes('veryfirst')) {\n ps.push('veryfirst');\n }\n }\n if (bc === lastVisibleItem) {\n ps.push('last');\n if (!this.blade_ || this.blade_.get('positions').includes('verylast')) {\n ps.push('verylast');\n }\n }\n bc.blade.set('positions', ps);\n });\n }\n onChildPositionsChange_() {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildViewPropsChange_(_ev) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildDispose_() {\n const disposedUcs = this.bcSet_.items.filter((bc) => {\n return bc.viewProps.get('disposed');\n });\n disposedUcs.forEach((bc) => {\n this.bcSet_.remove(bc);\n });\n }\n onChildInputChange_(ev) {\n const bc = findInputBindingController(this.find(InputBindingController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('inputchange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onChildMonitorUpdate_(ev) {\n const bc = findMonitorBindingController(this.find(MonitorBindingController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('monitorupdate', {\n bladeController: bc,\n sender: this,\n });\n }\n onChildValueChange_(ev) {\n const bc = findValueBladeController(this.find(ValueBladeController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('inputchange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onDescendantLayout_(_) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onDescendantInputChange_(ev) {\n this.emitter.emit('inputchange', {\n bladeController: ev.bladeController,\n options: ev.options,\n sender: this,\n });\n }\n onDescendantMonitorUpdate_(ev) {\n this.emitter.emit('monitorupdate', {\n bladeController: ev.bladeController,\n sender: this,\n });\n }\n onBladePositionsChange_() {\n this.updatePositions_();\n }\n }\n\n class RackController extends BladeController {\n constructor(doc, config) {\n super(Object.assign(Object.assign({}, config), { view: new PlainView(doc, {\n viewName: 'brk',\n viewProps: config.viewProps,\n }) }));\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n const rack = new BladeRack(config.root ? undefined : config.blade);\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.rack = rack;\n this.viewProps.handleDispose(() => {\n for (let i = this.rack.children.length - 1; i >= 0; i--) {\n const bc = this.rack.children[i];\n bc.viewProps.set('disposed', true);\n }\n });\n }\n onRackAdd_(ev) {\n if (!ev.isRoot) {\n return;\n }\n insertElementAt(this.view.element, ev.bladeController.view.element, ev.index);\n }\n onRackRemove_(ev) {\n if (!ev.isRoot) {\n return;\n }\n removeElement(ev.bladeController.view.element);\n }\n }\n\n const bladeContainerClassName = ClassName('cnt');\n\n class FolderView {\n constructor(doc, config) {\n this.className_ = ClassName(config.viewName || 'fld');\n this.element = doc.createElement('div');\n this.element.classList.add(this.className_(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n this.foldable_ = config.foldable;\n this.foldable_.bindExpandedClass(this.element, this.className_(undefined, 'expanded'));\n bindValueMap(this.foldable_, 'completed', valueToClassName(this.element, this.className_(undefined, 'cpl')));\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(this.className_('b'));\n bindValueMap(config.props, 'title', (title) => {\n if (isEmpty(title)) {\n this.element.classList.add(this.className_(undefined, 'not'));\n }\n else {\n this.element.classList.remove(this.className_(undefined, 'not'));\n }\n });\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(this.className_('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(this.className_('m'));\n this.buttonElement.appendChild(markElem);\n const containerElem = config.containerElement;\n containerElem.classList.add(this.className_('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n }\n\n class FolderController extends RackLikeController {\n constructor(doc, config) {\n var _a;\n const foldable = Foldable.create((_a = config.expanded) !== null && _a !== void 0 ? _a : true);\n const rc = new RackController(doc, {\n blade: config.blade,\n root: config.root,\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: rc, view: new FolderView(doc, {\n containerElement: rc.view.element,\n foldable: foldable,\n props: config.props,\n viewName: config.root ? 'rot' : undefined,\n viewProps: config.viewProps,\n }) }));\n this.onTitleClick_ = this.onTitleClick_.bind(this);\n this.props = config.props;\n this.foldable = foldable;\n bindFoldable(this.foldable, this.view.containerElement);\n this.view.buttonElement.addEventListener('click', this.onTitleClick_);\n }\n get document() {\n return this.view.element.ownerDocument;\n }\n onTitleClick_() {\n this.foldable.set('expanded', !this.foldable.get('expanded'));\n }\n }\n\n const FolderBladePlugin = {\n id: 'folder',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n title: p.required.string,\n view: p.required.constant('folder'),\n expanded: p.optional.boolean,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new FolderController(args.document, {\n blade: args.blade,\n expanded: args.params.expanded,\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof FolderController)) {\n return null;\n }\n return new FolderApi(args.controller, args.pool);\n },\n };\n\n class LabeledValueController extends ValueBladeController {\n constructor(doc, config) {\n const viewProps = config.valueController.viewProps;\n super(Object.assign(Object.assign({}, config), { value: config.valueController.value, view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.props = config.props;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n }\n\n class SeparatorApi extends BladeApi {\n }\n\n const className$n = ClassName('spr');\n class SeparatorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$n());\n config.viewProps.bindClassModifiers(this.element);\n const hrElem = doc.createElement('hr');\n hrElem.classList.add(className$n('r'));\n this.element.appendChild(hrElem);\n }\n }\n\n class SeparatorController extends BladeController {\n constructor(doc, config) {\n super(Object.assign(Object.assign({}, config), { view: new SeparatorView(doc, {\n viewProps: config.viewProps,\n }) }));\n }\n }\n\n const SeparatorBladePlugin = {\n id: 'separator',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n view: p.required.constant('separator'),\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new SeparatorController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof SeparatorController)) {\n return null;\n }\n return new SeparatorApi(args.controller);\n },\n };\n\n const className$m = ClassName('');\n function valueToModifier(elem, modifier) {\n return valueToClassName(elem, className$m(undefined, modifier));\n }\n class ViewProps extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(opt_initialValue) {\n var _a, _b;\n const initialValue = opt_initialValue !== null && opt_initialValue !== void 0 ? opt_initialValue : {};\n const coreObj = {\n disabled: (_a = initialValue.disabled) !== null && _a !== void 0 ? _a : false,\n disposed: false,\n hidden: (_b = initialValue.hidden) !== null && _b !== void 0 ? _b : false,\n };\n const core = ValueMap.createCore(coreObj);\n return new ViewProps(core);\n }\n bindClassModifiers(elem) {\n bindValueMap(this, 'disabled', valueToModifier(elem, 'disabled'));\n bindValueMap(this, 'hidden', valueToModifier(elem, 'hidden'));\n }\n bindDisabled(target) {\n bindValueMap(this, 'disabled', (disabled) => {\n target.disabled = disabled;\n });\n }\n bindTabIndex(elem) {\n bindValueMap(this, 'disabled', (disabled) => {\n elem.tabIndex = disabled ? -1 : 0;\n });\n }\n handleDispose(callback) {\n this.value('disposed').emitter.on('change', (disposed) => {\n if (disposed) {\n callback();\n }\n });\n }\n }\n\n const className$l = ClassName('tbi');\n class TabItemView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$l());\n config.viewProps.bindClassModifiers(this.element);\n bindValueMap(config.props, 'selected', (selected) => {\n if (selected) {\n this.element.classList.add(className$l(undefined, 'sel'));\n }\n else {\n this.element.classList.remove(className$l(undefined, 'sel'));\n }\n });\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$l('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(className$l('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n }\n }\n\n class TabItemController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new TabItemView(doc, {\n props: config.props,\n viewProps: config.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n }\n\n class TabPageController {\n constructor(doc, config) {\n this.onItemClick_ = this.onItemClick_.bind(this);\n this.ic_ = new TabItemController(doc, {\n props: config.itemProps,\n viewProps: ViewProps.create(),\n });\n this.ic_.emitter.on('click', this.onItemClick_);\n this.cc_ = new RackController(doc, {\n blade: createBlade(),\n viewProps: ViewProps.create(),\n });\n this.props = config.props;\n bindValueMap(this.props, 'selected', (selected) => {\n this.itemController.props.set('selected', selected);\n this.contentController.viewProps.set('hidden', !selected);\n });\n }\n get itemController() {\n return this.ic_;\n }\n get contentController() {\n return this.cc_;\n }\n onItemClick_() {\n this.props.set('selected', true);\n }\n }\n\n class TabPageApi {\n constructor(controller, contentRackApi) {\n this.controller_ = controller;\n this.rackApi_ = contentRackApi;\n }\n get title() {\n var _a;\n return (_a = this.controller_.itemController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.itemController.props.set('title', title);\n }\n get selected() {\n return this.controller_.props.get('selected');\n }\n set selected(selected) {\n this.controller_.props.set('selected', selected);\n }\n get children() {\n return this.rackApi_.children;\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addSeparator(opt_params) {\n return this.rackApi_.addSeparator(opt_params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addInput(object, key, opt_params) {\n return this.rackApi_.addInput(object, key, opt_params);\n }\n addMonitor(object, key, opt_params) {\n return this.rackApi_.addMonitor(object, key, opt_params);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n }\n\n class TabApi extends RackLikeApi {\n constructor(controller, pool) {\n super(controller, new RackApi(controller.rackController, pool));\n this.onPageAdd_ = this.onPageAdd_.bind(this);\n this.onPageRemove_ = this.onPageRemove_.bind(this);\n this.emitter_ = new Emitter();\n this.pageApiMap_ = new Map();\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: ev,\n });\n });\n this.rackApi_.on('update', (ev) => {\n this.emitter_.emit('update', {\n event: ev,\n });\n });\n this.controller_.pageSet.emitter.on('add', this.onPageAdd_);\n this.controller_.pageSet.emitter.on('remove', this.onPageRemove_);\n this.controller_.pageSet.items.forEach((pc) => {\n this.setUpPageApi_(pc);\n });\n }\n get pages() {\n return this.controller_.pageSet.items.map((pc) => {\n const api = this.pageApiMap_.get(pc);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n });\n }\n addPage(params) {\n const doc = this.controller_.view.element.ownerDocument;\n const pc = new TabPageController(doc, {\n itemProps: ValueMap.fromObject({\n selected: false,\n title: params.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n });\n this.controller_.add(pc, params.index);\n const api = this.pageApiMap_.get(pc);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n removePage(index) {\n this.controller_.remove(index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n setUpPageApi_(pc) {\n const rackApi = this.rackApi_['apiSet_'].find((api) => api.controller_ === pc.contentController);\n if (!rackApi) {\n throw TpError.shouldNeverHappen();\n }\n const api = new TabPageApi(pc, rackApi);\n this.pageApiMap_.set(pc, api);\n }\n onPageAdd_(ev) {\n this.setUpPageApi_(ev.item);\n }\n onPageRemove_(ev) {\n const api = this.pageApiMap_.get(ev.item);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n this.pageApiMap_.delete(ev.item);\n }\n }\n\n const className$k = ClassName('tab');\n class TabView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$k(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.empty, valueToClassName(this.element, className$k(undefined, 'nop')));\n const itemsElem = doc.createElement('div');\n itemsElem.classList.add(className$k('i'));\n this.element.appendChild(itemsElem);\n this.itemsElement = itemsElem;\n const contentsElem = config.contentsElement;\n contentsElem.classList.add(className$k('c'));\n this.element.appendChild(contentsElem);\n this.contentsElement = contentsElem;\n }\n }\n\n class TabController extends RackLikeController {\n constructor(doc, config) {\n const cr = new RackController(doc, {\n blade: config.blade,\n viewProps: config.viewProps,\n });\n const empty = createValue(true);\n super({\n blade: config.blade,\n rackController: cr,\n view: new TabView(doc, {\n contentsElement: cr.view.element,\n empty: empty,\n viewProps: config.viewProps,\n }),\n });\n this.onPageAdd_ = this.onPageAdd_.bind(this);\n this.onPageRemove_ = this.onPageRemove_.bind(this);\n this.onPageSelectedChange_ = this.onPageSelectedChange_.bind(this);\n this.pageSet_ = new NestedOrderedSet(() => null);\n this.pageSet_.emitter.on('add', this.onPageAdd_);\n this.pageSet_.emitter.on('remove', this.onPageRemove_);\n this.empty_ = empty;\n this.applyPages_();\n }\n get pageSet() {\n return this.pageSet_;\n }\n add(pc, opt_index) {\n this.pageSet_.add(pc, opt_index !== null && opt_index !== void 0 ? opt_index : this.pageSet_.items.length);\n }\n remove(index) {\n this.pageSet_.remove(this.pageSet_.items[index]);\n }\n applyPages_() {\n this.keepSelection_();\n this.empty_.rawValue = this.pageSet_.items.length === 0;\n }\n onPageAdd_(ev) {\n const pc = ev.item;\n insertElementAt(this.view.itemsElement, pc.itemController.view.element, ev.index);\n this.rackController.rack.add(pc.contentController, ev.index);\n pc.props.value('selected').emitter.on('change', this.onPageSelectedChange_);\n this.applyPages_();\n }\n onPageRemove_(ev) {\n const pc = ev.item;\n removeElement(pc.itemController.view.element);\n this.rackController.rack.remove(pc.contentController);\n pc.props\n .value('selected')\n .emitter.off('change', this.onPageSelectedChange_);\n this.applyPages_();\n }\n keepSelection_() {\n if (this.pageSet_.items.length === 0) {\n return;\n }\n const firstSelIndex = this.pageSet_.items.findIndex((pc) => pc.props.get('selected'));\n if (firstSelIndex < 0) {\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === 0);\n });\n }\n else {\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === firstSelIndex);\n });\n }\n }\n onPageSelectedChange_(ev) {\n if (ev.rawValue) {\n const index = this.pageSet_.items.findIndex((pc) => pc.props.value('selected') === ev.sender);\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === index);\n });\n }\n else {\n this.keepSelection_();\n }\n }\n }\n\n const TabBladePlugin = {\n id: 'tab',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n pages: p.required.array(p.required.object({ title: p.required.string })),\n view: p.required.constant('tab'),\n });\n if (!result || result.pages.length === 0) {\n return null;\n }\n return { params: result };\n },\n controller(args) {\n const c = new TabController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n args.params.pages.forEach((p) => {\n const pc = new TabPageController(args.document, {\n itemProps: ValueMap.fromObject({\n selected: false,\n title: p.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n });\n c.add(pc);\n });\n return c;\n },\n api(args) {\n if (!(args.controller instanceof TabController)) {\n return null;\n }\n return new TabApi(args.controller, args.pool);\n },\n };\n\n function createBladeController(plugin, args) {\n const ac = plugin.accept(args.params);\n if (!ac) {\n return null;\n }\n const disabled = ParamsParsers.optional.boolean(args.params['disabled']).value;\n const hidden = ParamsParsers.optional.boolean(args.params['hidden']).value;\n return plugin.controller({\n blade: createBlade(),\n document: args.document,\n params: forceCast(Object.assign(Object.assign({}, ac.params), { disabled: disabled, hidden: hidden })),\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n }\n\n class ManualTicker {\n constructor() {\n this.disabled = false;\n this.emitter = new Emitter();\n }\n dispose() { }\n tick() {\n if (this.disabled) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n }\n\n class IntervalTicker {\n constructor(doc, interval) {\n this.disabled_ = false;\n this.timerId_ = null;\n this.onTick_ = this.onTick_.bind(this);\n this.doc_ = doc;\n this.emitter = new Emitter();\n this.interval_ = interval;\n this.setTimer_();\n }\n get disabled() {\n return this.disabled_;\n }\n set disabled(inactive) {\n this.disabled_ = inactive;\n if (this.disabled_) {\n this.clearTimer_();\n }\n else {\n this.setTimer_();\n }\n }\n dispose() {\n this.clearTimer_();\n }\n clearTimer_() {\n if (this.timerId_ === null) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n win.clearInterval(this.timerId_);\n }\n this.timerId_ = null;\n }\n setTimer_() {\n this.clearTimer_();\n if (this.interval_ <= 0) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n this.timerId_ = win.setInterval(this.onTick_, this.interval_);\n }\n }\n onTick_() {\n if (this.disabled_) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n }\n\n class CompositeConstraint {\n constructor(constraints) {\n this.constraints = constraints;\n }\n constrain(value) {\n return this.constraints.reduce((result, c) => {\n return c.constrain(result);\n }, value);\n }\n }\n function findConstraint(c, constraintClass) {\n if (c instanceof constraintClass) {\n return c;\n }\n if (c instanceof CompositeConstraint) {\n const result = c.constraints.reduce((tmpResult, sc) => {\n if (tmpResult) {\n return tmpResult;\n }\n return sc instanceof constraintClass ? sc : null;\n }, null);\n if (result) {\n return result;\n }\n }\n return null;\n }\n\n class ListConstraint {\n constructor(options) {\n this.options = options;\n }\n constrain(value) {\n const opts = this.options;\n if (opts.length === 0) {\n return value;\n }\n const matched = opts.filter((item) => {\n return item.value === value;\n }).length > 0;\n return matched ? value : opts[0].value;\n }\n }\n\n class RangeConstraint {\n constructor(config) {\n this.maxValue = config.max;\n this.minValue = config.min;\n }\n constrain(value) {\n let result = value;\n if (!isEmpty(this.minValue)) {\n result = Math.max(result, this.minValue);\n }\n if (!isEmpty(this.maxValue)) {\n result = Math.min(result, this.maxValue);\n }\n return result;\n }\n }\n\n class StepConstraint {\n constructor(step) {\n this.step = step;\n }\n constrain(value) {\n const r = value < 0\n ? -Math.round(-value / this.step)\n : Math.round(value / this.step);\n return r * this.step;\n }\n }\n\n const className$j = ClassName('lst');\n class ListView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.element = doc.createElement('div');\n this.element.classList.add(className$j());\n config.viewProps.bindClassModifiers(this.element);\n const selectElem = doc.createElement('select');\n selectElem.classList.add(className$j('s'));\n bindValueMap(this.props_, 'options', (opts) => {\n removeChildElements(selectElem);\n opts.forEach((item, index) => {\n const optionElem = doc.createElement('option');\n optionElem.dataset.index = String(index);\n optionElem.textContent = item.text;\n optionElem.value = String(item.value);\n selectElem.appendChild(optionElem);\n });\n });\n config.viewProps.bindDisabled(selectElem);\n this.element.appendChild(selectElem);\n this.selectElement = selectElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(className$j('m'));\n markElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n this.element.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value_ = config.value;\n this.update_();\n }\n update_() {\n this.selectElement.value = String(this.value_.rawValue);\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class ListController {\n constructor(doc, config) {\n this.onSelectChange_ = this.onSelectChange_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ListView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.selectElement.addEventListener('change', this.onSelectChange_);\n }\n onSelectChange_(e) {\n const selectElem = forceCast(e.currentTarget);\n const optElem = selectElem.selectedOptions.item(0);\n if (!optElem) {\n return;\n }\n const itemIndex = Number(optElem.dataset.index);\n this.value.rawValue = this.props.get('options')[itemIndex].value;\n }\n }\n\n const className$i = ClassName('pop');\n class PopupView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$i());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.shows, valueToClassName(this.element, className$i(undefined, 'v')));\n }\n }\n\n class PopupController {\n constructor(doc, config) {\n this.shows = createValue(false);\n this.viewProps = config.viewProps;\n this.view = new PopupView(doc, {\n shows: this.shows,\n viewProps: this.viewProps,\n });\n }\n }\n\n const className$h = ClassName('txt');\n class TextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className$h());\n config.viewProps.bindClassModifiers(this.element);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$h('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onChange_);\n this.value_ = config.value;\n this.refresh();\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value_.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n }\n\n class TextController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new TextView(doc, {\n props: config.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n }\n\n function boolToString(value) {\n return String(value);\n }\n function boolFromUnknown(value) {\n if (value === 'false') {\n return false;\n }\n return !!value;\n }\n function BooleanFormatter(value) {\n return boolToString(value);\n }\n\n class NumberLiteralNode {\n constructor(text) {\n this.text = text;\n }\n evaluate() {\n return Number(this.text);\n }\n toString() {\n return this.text;\n }\n }\n const BINARY_OPERATION_MAP = {\n '**': (v1, v2) => Math.pow(v1, v2),\n '*': (v1, v2) => v1 * v2,\n '/': (v1, v2) => v1 / v2,\n '%': (v1, v2) => v1 % v2,\n '+': (v1, v2) => v1 + v2,\n '-': (v1, v2) => v1 - v2,\n '<<': (v1, v2) => v1 << v2,\n '>>': (v1, v2) => v1 >> v2,\n '>>>': (v1, v2) => v1 >>> v2,\n '&': (v1, v2) => v1 & v2,\n '^': (v1, v2) => v1 ^ v2,\n '|': (v1, v2) => v1 | v2,\n };\n class BinaryOperationNode {\n constructor(operator, left, right) {\n this.left = left;\n this.operator = operator;\n this.right = right;\n }\n evaluate() {\n const op = BINARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected binary operator: '${this.operator}`);\n }\n return op(this.left.evaluate(), this.right.evaluate());\n }\n toString() {\n return [\n 'b(',\n this.left.toString(),\n this.operator,\n this.right.toString(),\n ')',\n ].join(' ');\n }\n }\n const UNARY_OPERATION_MAP = {\n '+': (v) => v,\n '-': (v) => -v,\n '~': (v) => ~v,\n };\n class UnaryOperationNode {\n constructor(operator, expr) {\n this.operator = operator;\n this.expression = expr;\n }\n evaluate() {\n const op = UNARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected unary operator: '${this.operator}`);\n }\n return op(this.expression.evaluate());\n }\n toString() {\n return ['u(', this.operator, this.expression.toString(), ')'].join(' ');\n }\n }\n\n function combineReader(parsers) {\n return (text, cursor) => {\n for (let i = 0; i < parsers.length; i++) {\n const result = parsers[i](text, cursor);\n if (result !== '') {\n return result;\n }\n }\n return '';\n };\n }\n function readWhitespace(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^\\s+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readNonZeroDigit(text, cursor) {\n const ch = text.substr(cursor, 1);\n return ch.match(/^[1-9]$/) ? ch : '';\n }\n function readDecimalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readSignedInteger(text, cursor) {\n const ds = readDecimalDigits(text, cursor);\n if (ds !== '') {\n return ds;\n }\n const sign = text.substr(cursor, 1);\n cursor += 1;\n if (sign !== '-' && sign !== '+') {\n return '';\n }\n const sds = readDecimalDigits(text, cursor);\n if (sds === '') {\n return '';\n }\n return sign + sds;\n }\n function readExponentPart(text, cursor) {\n const e = text.substr(cursor, 1);\n cursor += 1;\n if (e.toLowerCase() !== 'e') {\n return '';\n }\n const si = readSignedInteger(text, cursor);\n if (si === '') {\n return '';\n }\n return e + si;\n }\n function readDecimalIntegerLiteral(text, cursor) {\n const ch = text.substr(cursor, 1);\n if (ch === '0') {\n return ch;\n }\n const nzd = readNonZeroDigit(text, cursor);\n cursor += nzd.length;\n if (nzd === '') {\n return '';\n }\n return nzd + readDecimalDigits(text, cursor);\n }\n function readDecimalLiteral1(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n return dil + dot + dds + readExponentPart(text, cursor);\n }\n function readDecimalLiteral2(text, cursor) {\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n if (dds === '') {\n return '';\n }\n return dot + dds + readExponentPart(text, cursor);\n }\n function readDecimalLiteral3(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n return dil + readExponentPart(text, cursor);\n }\n const readDecimalLiteral = combineReader([\n readDecimalLiteral1,\n readDecimalLiteral2,\n readDecimalLiteral3,\n ]);\n function parseBinaryDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[01]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readBinaryIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0b') {\n return '';\n }\n const bds = parseBinaryDigits(text, cursor);\n if (bds === '') {\n return '';\n }\n return prefix + bds;\n }\n function readOctalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-7]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readOctalIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0o') {\n return '';\n }\n const ods = readOctalDigits(text, cursor);\n if (ods === '') {\n return '';\n }\n return prefix + ods;\n }\n function readHexDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9a-f]+/i);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readHexIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0x') {\n return '';\n }\n const hds = readHexDigits(text, cursor);\n if (hds === '') {\n return '';\n }\n return prefix + hds;\n }\n const readNonDecimalIntegerLiteral = combineReader([\n readBinaryIntegerLiteral,\n readOctalIntegerLiteral,\n readHexIntegerLiteral,\n ]);\n const readNumericLiteral = combineReader([\n readNonDecimalIntegerLiteral,\n readDecimalLiteral,\n ]);\n\n function parseLiteral(text, cursor) {\n const num = readNumericLiteral(text, cursor);\n cursor += num.length;\n if (num === '') {\n return null;\n }\n return {\n evaluable: new NumberLiteralNode(num),\n cursor: cursor,\n };\n }\n function parseParenthesizedExpression(text, cursor) {\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '(') {\n return null;\n }\n const expr = parseExpression(text, cursor);\n if (!expr) {\n return null;\n }\n cursor = expr.cursor;\n cursor += readWhitespace(text, cursor).length;\n const cl = text.substr(cursor, 1);\n cursor += cl.length;\n if (cl !== ')') {\n return null;\n }\n return {\n evaluable: expr.evaluable,\n cursor: cursor,\n };\n }\n function parsePrimaryExpression(text, cursor) {\n return (parseLiteral(text, cursor) || parseParenthesizedExpression(text, cursor));\n }\n function parseUnaryExpression(text, cursor) {\n const expr = parsePrimaryExpression(text, cursor);\n if (expr) {\n return expr;\n }\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '+' && op !== '-' && op !== '~') {\n return null;\n }\n const num = parseUnaryExpression(text, cursor);\n if (!num) {\n return null;\n }\n cursor = num.cursor;\n return {\n cursor: cursor,\n evaluable: new UnaryOperationNode(op, num.evaluable),\n };\n }\n function readBinaryOperator(ops, text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n const op = ops.filter((op) => text.startsWith(op, cursor))[0];\n if (!op) {\n return null;\n }\n cursor += op.length;\n cursor += readWhitespace(text, cursor).length;\n return {\n cursor: cursor,\n operator: op,\n };\n }\n function createBinaryOperationExpressionParser(exprParser, ops) {\n return (text, cursor) => {\n const firstExpr = exprParser(text, cursor);\n if (!firstExpr) {\n return null;\n }\n cursor = firstExpr.cursor;\n let expr = firstExpr.evaluable;\n for (;;) {\n const op = readBinaryOperator(ops, text, cursor);\n if (!op) {\n break;\n }\n cursor = op.cursor;\n const nextExpr = exprParser(text, cursor);\n if (!nextExpr) {\n return null;\n }\n cursor = nextExpr.cursor;\n expr = new BinaryOperationNode(op.operator, expr, nextExpr.evaluable);\n }\n return expr\n ? {\n cursor: cursor,\n evaluable: expr,\n }\n : null;\n };\n }\n const parseBinaryOperationExpression = [\n ['**'],\n ['*', '/', '%'],\n ['+', '-'],\n ['<<', '>>>', '>>'],\n ['&'],\n ['^'],\n ['|'],\n ].reduce((parser, ops) => {\n return createBinaryOperationExpressionParser(parser, ops);\n }, parseUnaryExpression);\n function parseExpression(text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n return parseBinaryOperationExpression(text, cursor);\n }\n function parseEcmaNumberExpression(text) {\n const expr = parseExpression(text, 0);\n if (!expr) {\n return null;\n }\n const cursor = expr.cursor + readWhitespace(text, expr.cursor).length;\n if (cursor !== text.length) {\n return null;\n }\n return expr.evaluable;\n }\n\n function parseNumber(text) {\n var _a;\n const r = parseEcmaNumberExpression(text);\n return (_a = r === null || r === void 0 ? void 0 : r.evaluate()) !== null && _a !== void 0 ? _a : null;\n }\n function numberFromUnknown(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const pv = parseNumber(value);\n if (!isEmpty(pv)) {\n return pv;\n }\n }\n return 0;\n }\n function numberToString(value) {\n return String(value);\n }\n function createNumberFormatter(digits) {\n return (value) => {\n return value.toFixed(Math.max(Math.min(digits, 20), 0));\n };\n }\n\n const innerFormatter = createNumberFormatter(0);\n function formatPercentage(value) {\n return innerFormatter(value) + '%';\n }\n\n function stringFromUnknown(value) {\n return String(value);\n }\n function formatString(value) {\n return value;\n }\n\n function fillBuffer(buffer, bufferSize) {\n while (buffer.length < bufferSize) {\n buffer.push(undefined);\n }\n }\n function initializeBuffer(bufferSize) {\n const buffer = [];\n fillBuffer(buffer, bufferSize);\n return createValue(buffer);\n }\n function createTrimmedBuffer(buffer) {\n const index = buffer.indexOf(undefined);\n return forceCast(index < 0 ? buffer : buffer.slice(0, index));\n }\n function createPushedBuffer(buffer, newValue) {\n const newBuffer = [...createTrimmedBuffer(buffer), newValue];\n if (newBuffer.length > buffer.length) {\n newBuffer.splice(0, newBuffer.length - buffer.length);\n }\n else {\n fillBuffer(newBuffer, buffer.length);\n }\n return newBuffer;\n }\n\n function connectValues({ primary, secondary, forward, backward, }) {\n let changing = false;\n function preventFeedback(callback) {\n if (changing) {\n return;\n }\n changing = true;\n callback();\n changing = false;\n }\n primary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), ev.options);\n });\n });\n secondary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n primary.setRawValue(backward(primary, secondary), ev.options);\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), ev.options);\n });\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), {\n forceEmit: false,\n last: true,\n });\n });\n }\n\n function getStepForKey(baseStep, keys) {\n const step = baseStep * (keys.altKey ? 0.1 : 1) * (keys.shiftKey ? 10 : 1);\n if (keys.upKey) {\n return +step;\n }\n else if (keys.downKey) {\n return -step;\n }\n return 0;\n }\n function getVerticalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowDown',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowUp',\n };\n }\n function getHorizontalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowLeft',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowRight',\n };\n }\n function isVerticalArrowKey(key) {\n return key === 'ArrowUp' || key === 'ArrowDown';\n }\n function isArrowKey(key) {\n return isVerticalArrowKey(key) || key === 'ArrowLeft' || key === 'ArrowRight';\n }\n\n function computeOffset$1(ev, elem) {\n const win = elem.ownerDocument.defaultView;\n const rect = elem.getBoundingClientRect();\n return {\n x: ev.pageX - (((win && win.scrollX) || 0) + rect.left),\n y: ev.pageY - (((win && win.scrollY) || 0) + rect.top),\n };\n }\n class PointerHandler {\n constructor(element) {\n this.lastTouch_ = null;\n this.onDocumentMouseMove_ = this.onDocumentMouseMove_.bind(this);\n this.onDocumentMouseUp_ = this.onDocumentMouseUp_.bind(this);\n this.onMouseDown_ = this.onMouseDown_.bind(this);\n this.onTouchEnd_ = this.onTouchEnd_.bind(this);\n this.onTouchMove_ = this.onTouchMove_.bind(this);\n this.onTouchStart_ = this.onTouchStart_.bind(this);\n this.elem_ = element;\n this.emitter = new Emitter();\n element.addEventListener('touchstart', this.onTouchStart_, {\n passive: false,\n });\n element.addEventListener('touchmove', this.onTouchMove_, {\n passive: true,\n });\n element.addEventListener('touchend', this.onTouchEnd_);\n element.addEventListener('mousedown', this.onMouseDown_);\n }\n computePosition_(offset) {\n const rect = this.elem_.getBoundingClientRect();\n return {\n bounds: {\n width: rect.width,\n height: rect.height,\n },\n point: offset\n ? {\n x: offset.x,\n y: offset.y,\n }\n : null,\n };\n }\n onMouseDown_(ev) {\n var _a;\n ev.preventDefault();\n (_a = ev.currentTarget) === null || _a === void 0 ? void 0 : _a.focus();\n const doc = this.elem_.ownerDocument;\n doc.addEventListener('mousemove', this.onDocumentMouseMove_);\n doc.addEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseMove_(ev) {\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseUp_(ev) {\n const doc = this.elem_.ownerDocument;\n doc.removeEventListener('mousemove', this.onDocumentMouseMove_);\n doc.removeEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onTouchStart_(ev) {\n ev.preventDefault();\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchMove_(ev) {\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchEnd_(ev) {\n var _a;\n const touch = (_a = ev.targetTouches.item(0)) !== null && _a !== void 0 ? _a : this.lastTouch_;\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n }\n\n function mapRange(value, start1, end1, start2, end2) {\n const p = (value - start1) / (end1 - start1);\n return start2 + p * (end2 - start2);\n }\n function getDecimalDigits(value) {\n const text = String(value.toFixed(10));\n const frac = text.split('.')[1];\n return frac.replace(/0+$/, '').length;\n }\n function constrainRange(value, min, max) {\n return Math.min(Math.max(value, min), max);\n }\n function loopRange(value, max) {\n return ((value % max) + max) % max;\n }\n\n const className$g = ClassName('txt');\n class NumberTextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$g(), className$g(undefined, 'num'));\n if (config.arrayPosition) {\n this.element.classList.add(className$g(undefined, config.arrayPosition));\n }\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$g('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n this.onDraggingChange_ = this.onDraggingChange_.bind(this);\n this.dragging_ = config.dragging;\n this.dragging_.emitter.on('change', this.onDraggingChange_);\n this.element.classList.add(className$g());\n this.inputElement.classList.add(className$g('i'));\n const knobElem = doc.createElement('div');\n knobElem.classList.add(className$g('k'));\n this.element.appendChild(knobElem);\n this.knobElement = knobElem;\n const guideElem = doc.createElementNS(SVG_NS, 'svg');\n guideElem.classList.add(className$g('g'));\n this.knobElement.appendChild(guideElem);\n const bodyElem = doc.createElementNS(SVG_NS, 'path');\n bodyElem.classList.add(className$g('gb'));\n guideElem.appendChild(bodyElem);\n this.guideBodyElem_ = bodyElem;\n const headElem = doc.createElementNS(SVG_NS, 'path');\n headElem.classList.add(className$g('gh'));\n guideElem.appendChild(headElem);\n this.guideHeadElem_ = headElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(ClassName('tt')());\n this.knobElement.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.refresh();\n }\n onDraggingChange_(ev) {\n if (ev.rawValue === null) {\n this.element.classList.remove(className$g(undefined, 'drg'));\n return;\n }\n this.element.classList.add(className$g(undefined, 'drg'));\n const x = ev.rawValue / this.props_.get('draggingScale');\n const aox = x + (x > 0 ? -1 : x < 0 ? +1 : 0);\n const adx = constrainRange(-aox, -4, +4);\n this.guideHeadElem_.setAttributeNS(null, 'd', [`M ${aox + adx},0 L${aox},4 L${aox + adx},8`, `M ${x},-1 L${x},9`].join(' '));\n this.guideBodyElem_.setAttributeNS(null, 'd', `M 0,4 L${x},4`);\n const formatter = this.props_.get('formatter');\n this.tooltipElem_.textContent = formatter(this.value.rawValue);\n this.tooltipElem_.style.left = `${x}px`;\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n }\n\n class NumberTextController {\n constructor(doc, config) {\n this.originRawValue_ = 0;\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.onInputKeyDown_ = this.onInputKeyDown_.bind(this);\n this.onInputKeyUp_ = this.onInputKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.baseStep_ = config.baseStep;\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.dragging_ = createValue(null);\n this.view = new NumberTextView(doc, {\n arrayPosition: config.arrayPosition,\n dragging: this.dragging_,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n this.view.inputElement.addEventListener('keydown', this.onInputKeyDown_);\n this.view.inputElement.addEventListener('keyup', this.onInputKeyUp_);\n const ph = new PointerHandler(this.view.knobElement);\n ph.emitter.on('down', this.onPointerDown_);\n ph.emitter.on('move', this.onPointerMove_);\n ph.emitter.on('up', this.onPointerUp_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n onInputKeyDown_(ev) {\n const step = getStepForKey(this.baseStep_, getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onInputKeyUp_(ev) {\n const step = getStepForKey(this.baseStep_, getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n onPointerDown_() {\n this.originRawValue_ = this.value.rawValue;\n this.dragging_.rawValue = 0;\n }\n computeDraggingValue_(data) {\n if (!data.point) {\n return null;\n }\n const dx = data.point.x - data.bounds.width / 2;\n return this.originRawValue_ + dx * this.props.get('draggingScale');\n }\n onPointerMove_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: false,\n last: false,\n });\n this.dragging_.rawValue = this.value.rawValue - this.originRawValue_;\n }\n onPointerUp_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: true,\n last: true,\n });\n this.dragging_.rawValue = null;\n }\n }\n\n const className$f = ClassName('sld');\n class SliderView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$f());\n config.viewProps.bindClassModifiers(this.element);\n const trackElem = doc.createElement('div');\n trackElem.classList.add(className$f('t'));\n config.viewProps.bindTabIndex(trackElem);\n this.element.appendChild(trackElem);\n this.trackElement = trackElem;\n const knobElem = doc.createElement('div');\n knobElem.classList.add(className$f('k'));\n this.trackElement.appendChild(knobElem);\n this.knobElement = knobElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const p = constrainRange(mapRange(this.value.rawValue, this.props_.get('minValue'), this.props_.get('maxValue'), 0, 100), 0, 100);\n this.knobElement.style.width = `${p}%`;\n }\n onChange_() {\n this.update_();\n }\n }\n\n class SliderController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDownOrMove_ = this.onPointerDownOrMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.baseStep_ = config.baseStep;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.props = config.props;\n this.view = new SliderView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.trackElement);\n this.ptHandler_.emitter.on('down', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('move', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.trackElement.addEventListener('keydown', this.onKeyDown_);\n this.view.trackElement.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n this.value.setRawValue(mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, this.props.get('minValue'), this.props.get('maxValue')), opts);\n }\n onPointerDownOrMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(this.baseStep_, getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(this.baseStep_, getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$e = ClassName('sldtxt');\n class SliderTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$e());\n const sliderElem = doc.createElement('div');\n sliderElem.classList.add(className$e('s'));\n this.sliderView_ = config.sliderView;\n sliderElem.appendChild(this.sliderView_.element);\n this.element.appendChild(sliderElem);\n const textElem = doc.createElement('div');\n textElem.classList.add(className$e('t'));\n this.textView_ = config.textView;\n textElem.appendChild(this.textView_.element);\n this.element.appendChild(textElem);\n }\n }\n\n class SliderTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.sliderC_ = new SliderController(doc, {\n baseStep: config.baseStep,\n props: config.sliderProps,\n value: config.value,\n viewProps: this.viewProps,\n });\n this.textC_ = new NumberTextController(doc, {\n baseStep: config.baseStep,\n parser: config.parser,\n props: config.textProps,\n value: config.value,\n viewProps: config.viewProps,\n });\n this.view = new SliderTextView(doc, {\n sliderView: this.sliderC_.view,\n textView: this.textC_.view,\n });\n }\n get sliderController() {\n return this.sliderC_;\n }\n get textController() {\n return this.textC_;\n }\n }\n\n function writePrimitive(target, value) {\n target.write(value);\n }\n\n function parseListOptions(value) {\n const p = ParamsParsers;\n if (Array.isArray(value)) {\n return p.required.array(p.required.object({\n text: p.required.string,\n value: p.required.raw,\n }))(value).value;\n }\n if (typeof value === 'object') {\n return p.required.raw(value)\n .value;\n }\n return undefined;\n }\n function parsePickerLayout(value) {\n if (value === 'inline' || value === 'popup') {\n return value;\n }\n return undefined;\n }\n function parsePointDimensionParams(value) {\n const p = ParamsParsers;\n return p.required.object({\n max: p.optional.number,\n min: p.optional.number,\n step: p.optional.number,\n })(value).value;\n }\n function normalizeListOptions(options) {\n if (Array.isArray(options)) {\n return options;\n }\n const items = [];\n Object.keys(options).forEach((text) => {\n items.push({ text: text, value: options[text] });\n });\n return items;\n }\n function createListConstraint(options) {\n return !isEmpty(options)\n ? new ListConstraint(normalizeListOptions(forceCast(options)))\n : null;\n }\n function findListItems(constraint) {\n const c = constraint\n ? findConstraint(constraint, ListConstraint)\n : null;\n if (!c) {\n return null;\n }\n return c.options;\n }\n function findStep(constraint) {\n const c = constraint ? findConstraint(constraint, StepConstraint) : null;\n if (!c) {\n return null;\n }\n return c.step;\n }\n function getSuitableDecimalDigits(constraint, rawValue) {\n const sc = constraint && findConstraint(constraint, StepConstraint);\n if (sc) {\n return getDecimalDigits(sc.step);\n }\n return Math.max(getDecimalDigits(rawValue), 2);\n }\n function getBaseStep(constraint) {\n const step = findStep(constraint);\n return step !== null && step !== void 0 ? step : 1;\n }\n function getSuitableDraggingScale(constraint, rawValue) {\n var _a;\n const sc = constraint && findConstraint(constraint, StepConstraint);\n const base = Math.abs((_a = sc === null || sc === void 0 ? void 0 : sc.step) !== null && _a !== void 0 ? _a : rawValue);\n return base === 0 ? 0.1 : Math.pow(10, Math.floor(Math.log10(base)) - 1);\n }\n\n const className$d = ClassName('ckb');\n class CheckboxView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className$d());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('label');\n labelElem.classList.add(className$d('l'));\n this.element.appendChild(labelElem);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$d('i'));\n inputElem.type = 'checkbox';\n labelElem.appendChild(inputElem);\n this.inputElement = inputElem;\n config.viewProps.bindDisabled(this.inputElement);\n const wrapperElem = doc.createElement('div');\n wrapperElem.classList.add(className$d('w'));\n labelElem.appendChild(wrapperElem);\n const markElem = createSvgIconElement(doc, 'check');\n wrapperElem.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n this.inputElement.checked = this.value.rawValue;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class CheckboxController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new CheckboxView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n this.value.rawValue = inputElem.checked;\n }\n }\n\n function createConstraint$5(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n const BooleanInputPlugin = {\n id: 'input-bool',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.optional.custom(parseListOptions),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n constraint: (args) => createConstraint$5(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(doc, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new CheckboxController(doc, {\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const className$c = ClassName('col');\n class ColorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$c());\n config.foldable.bindExpandedClass(this.element, className$c(undefined, 'expanded'));\n bindValueMap(config.foldable, 'completed', valueToClassName(this.element, className$c(undefined, 'cpl')));\n const headElem = doc.createElement('div');\n headElem.classList.add(className$c('h'));\n this.element.appendChild(headElem);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(className$c('s'));\n headElem.appendChild(swatchElem);\n this.swatchElement = swatchElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$c('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(className$c('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n }\n\n function rgbToHsl(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const c = cmax - cmin;\n let h = 0;\n let s = 0;\n const l = (cmin + cmax) / 2;\n if (c !== 0) {\n s = c / (1 - Math.abs(cmax + cmin - 1));\n if (rp === cmax) {\n h = (gp - bp) / c;\n }\n else if (gp === cmax) {\n h = 2 + (bp - rp) / c;\n }\n else {\n h = 4 + (rp - gp) / c;\n }\n h = h / 6 + (h < 0 ? 1 : 0);\n }\n return [h * 360, s * 100, l * 100];\n }\n function hslToRgb(h, s, l) {\n const hp = ((h % 360) + 360) % 360;\n const sp = constrainRange(s / 100, 0, 1);\n const lp = constrainRange(l / 100, 0, 1);\n const c = (1 - Math.abs(2 * lp - 1)) * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = lp - c / 2;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n }\n function rgbToHsv(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const d = cmax - cmin;\n let h;\n if (d === 0) {\n h = 0;\n }\n else if (cmax === rp) {\n h = 60 * (((((gp - bp) / d) % 6) + 6) % 6);\n }\n else if (cmax === gp) {\n h = 60 * ((bp - rp) / d + 2);\n }\n else {\n h = 60 * ((rp - gp) / d + 4);\n }\n const s = cmax === 0 ? 0 : d / cmax;\n const v = cmax;\n return [h, s * 100, v * 100];\n }\n function hsvToRgb(h, s, v) {\n const hp = loopRange(h, 360);\n const sp = constrainRange(s / 100, 0, 1);\n const vp = constrainRange(v / 100, 0, 1);\n const c = vp * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = vp - c;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n }\n function hslToHsv(h, s, l) {\n const sd = l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100);\n return [\n h,\n sd !== 0 ? (s * (100 - Math.abs(2 * l - 100))) / sd : 0,\n l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100),\n ];\n }\n function hsvToHsl(h, s, v) {\n const sd = 100 - Math.abs((v * (200 - s)) / 100 - 100);\n return [h, sd !== 0 ? (s * v) / sd : 0, (v * (200 - s)) / (2 * 100)];\n }\n function removeAlphaComponent(comps) {\n return [comps[0], comps[1], comps[2]];\n }\n function appendAlphaComponent(comps, alpha) {\n return [comps[0], comps[1], comps[2], alpha];\n }\n const MODE_CONVERTER_MAP = {\n hsl: {\n hsl: (h, s, l) => [h, s, l],\n hsv: hslToHsv,\n rgb: hslToRgb,\n },\n hsv: {\n hsl: hsvToHsl,\n hsv: (h, s, v) => [h, s, v],\n rgb: hsvToRgb,\n },\n rgb: {\n hsl: rgbToHsl,\n hsv: rgbToHsv,\n rgb: (r, g, b) => [r, g, b],\n },\n };\n function convertColorMode(components, fromMode, toMode) {\n return MODE_CONVERTER_MAP[fromMode][toMode](...components);\n }\n\n const CONSTRAINT_MAP = {\n hsl: (comps) => {\n var _a;\n return [\n loopRange(comps[0], 360),\n constrainRange(comps[1], 0, 100),\n constrainRange(comps[2], 0, 100),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n hsv: (comps) => {\n var _a;\n return [\n loopRange(comps[0], 360),\n constrainRange(comps[1], 0, 100),\n constrainRange(comps[2], 0, 100),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n rgb: (comps) => {\n var _a;\n return [\n constrainRange(comps[0], 0, 255),\n constrainRange(comps[1], 0, 255),\n constrainRange(comps[2], 0, 255),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n };\n function isRgbColorComponent(obj, key) {\n if (typeof obj !== 'object' || isEmpty(obj)) {\n return false;\n }\n return key in obj && typeof obj[key] === 'number';\n }\n class Color {\n constructor(comps, mode) {\n this.mode_ = mode;\n this.comps_ = CONSTRAINT_MAP[mode](comps);\n }\n static black() {\n return new Color([0, 0, 0], 'rgb');\n }\n static fromObject(obj) {\n const comps = 'a' in obj ? [obj.r, obj.g, obj.b, obj.a] : [obj.r, obj.g, obj.b];\n return new Color(comps, 'rgb');\n }\n static toRgbaObject(color) {\n return color.toRgbaObject();\n }\n static isRgbColorObject(obj) {\n return (isRgbColorComponent(obj, 'r') &&\n isRgbColorComponent(obj, 'g') &&\n isRgbColorComponent(obj, 'b'));\n }\n static isRgbaColorObject(obj) {\n return this.isRgbColorObject(obj) && isRgbColorComponent(obj, 'a');\n }\n static isColorObject(obj) {\n return this.isRgbColorObject(obj);\n }\n static equals(v1, v2) {\n if (v1.mode_ !== v2.mode_) {\n return false;\n }\n const comps1 = v1.comps_;\n const comps2 = v2.comps_;\n for (let i = 0; i < comps1.length; i++) {\n if (comps1[i] !== comps2[i]) {\n return false;\n }\n }\n return true;\n }\n get mode() {\n return this.mode_;\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColorMode(removeAlphaComponent(this.comps_), this.mode_, opt_mode || this.mode_), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n }\n\n const className$b = ClassName('colp');\n class ColorPickerView {\n constructor(doc, config) {\n this.alphaViews_ = null;\n this.element = doc.createElement('div');\n this.element.classList.add(className$b());\n const hsvElem = doc.createElement('div');\n hsvElem.classList.add(className$b('hsv'));\n const svElem = doc.createElement('div');\n svElem.classList.add(className$b('sv'));\n this.svPaletteView_ = config.svPaletteView;\n svElem.appendChild(this.svPaletteView_.element);\n hsvElem.appendChild(svElem);\n const hElem = doc.createElement('div');\n hElem.classList.add(className$b('h'));\n this.hPaletteView_ = config.hPaletteView;\n hElem.appendChild(this.hPaletteView_.element);\n hsvElem.appendChild(hElem);\n this.element.appendChild(hsvElem);\n const rgbElem = doc.createElement('div');\n rgbElem.classList.add(className$b('rgb'));\n this.textView_ = config.textView;\n rgbElem.appendChild(this.textView_.element);\n this.element.appendChild(rgbElem);\n if (config.alphaViews) {\n this.alphaViews_ = {\n palette: config.alphaViews.palette,\n text: config.alphaViews.text,\n };\n const aElem = doc.createElement('div');\n aElem.classList.add(className$b('a'));\n const apElem = doc.createElement('div');\n apElem.classList.add(className$b('ap'));\n apElem.appendChild(this.alphaViews_.palette.element);\n aElem.appendChild(apElem);\n const atElem = doc.createElement('div');\n atElem.classList.add(className$b('at'));\n atElem.appendChild(this.alphaViews_.text.element);\n aElem.appendChild(atElem);\n this.element.appendChild(aElem);\n }\n }\n get allFocusableElements() {\n const elems = [\n this.svPaletteView_.element,\n this.hPaletteView_.element,\n this.textView_.modeSelectElement,\n ...this.textView_.textViews.map((v) => v.inputElement),\n ];\n if (this.alphaViews_) {\n elems.push(this.alphaViews_.palette.element, this.alphaViews_.text.inputElement);\n }\n return elems;\n }\n }\n\n function parseColorInputParams(params) {\n const p = ParamsParsers;\n return parseParams(params, {\n alpha: p.optional.boolean,\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n });\n }\n function getBaseStepForColor(forAlpha) {\n return forAlpha ? 0.1 : 1;\n }\n\n function parseCssNumberOrPercentage(text, maxValue) {\n const m = text.match(/^(.+)%$/);\n if (!m) {\n return Math.min(parseFloat(text), maxValue);\n }\n return Math.min(parseFloat(m[1]) * 0.01 * maxValue, maxValue);\n }\n const ANGLE_TO_DEG_MAP = {\n deg: (angle) => angle,\n grad: (angle) => (angle * 360) / 400,\n rad: (angle) => (angle * 360) / (2 * Math.PI),\n turn: (angle) => angle * 360,\n };\n function parseCssNumberOrAngle(text) {\n const m = text.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);\n if (!m) {\n return parseFloat(text);\n }\n const angle = parseFloat(m[1]);\n const unit = m[2];\n return ANGLE_TO_DEG_MAP[unit](angle);\n }\n const NOTATION_TO_PARSER_MAP = {\n 'func.rgb': (text) => {\n const m = text.match(/^rgb\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return new Color(comps, 'rgb');\n },\n 'func.rgba': (text) => {\n const m = text.match(/^rgba\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return new Color(comps, 'rgb');\n },\n 'func.hsl': (text) => {\n const m = text.match(/^hsl\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return new Color(comps, 'hsl');\n },\n 'func.hsla': (text) => {\n const m = text.match(/^hsla\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return new Color(comps, 'hsl');\n },\n 'hex.rgb': (text) => {\n const mRgb = text.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return new Color([\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n ], 'rgb');\n }\n const mRrggbb = text.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return new Color([\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n ], 'rgb');\n }\n return null;\n },\n 'hex.rgba': (text) => {\n const mRgb = text.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return new Color([\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n mapRange(parseInt(mRgb[4] + mRgb[4], 16), 0, 255, 0, 1),\n ], 'rgb');\n }\n const mRrggbb = text.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return new Color([\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n mapRange(parseInt(mRrggbb[4], 16), 0, 255, 0, 1),\n ], 'rgb');\n }\n return null;\n },\n };\n function getColorNotation(text) {\n const notations = Object.keys(NOTATION_TO_PARSER_MAP);\n return notations.reduce((result, notation) => {\n if (result) {\n return result;\n }\n const subparser = NOTATION_TO_PARSER_MAP[notation];\n return subparser(text) ? notation : null;\n }, null);\n }\n const CompositeColorParser = (text) => {\n const notation = getColorNotation(text);\n return notation ? NOTATION_TO_PARSER_MAP[notation](text) : null;\n };\n function hasAlphaComponent(notation) {\n return (notation === 'func.hsla' ||\n notation === 'func.rgba' ||\n notation === 'hex.rgba');\n }\n function colorFromString(value) {\n if (typeof value === 'string') {\n const cv = CompositeColorParser(value);\n if (cv) {\n return cv;\n }\n }\n return Color.black();\n }\n function zerofill(comp) {\n const hex = constrainRange(Math.floor(comp), 0, 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }\n function colorToHexRgbString(value, prefix = '#') {\n const hexes = removeAlphaComponent(value.getComponents('rgb'))\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n }\n function colorToHexRgbaString(value, prefix = '#') {\n const rgbaComps = value.getComponents('rgb');\n const hexes = [rgbaComps[0], rgbaComps[1], rgbaComps[2], rgbaComps[3] * 255]\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n }\n function colorToFunctionalRgbString(value) {\n const formatter = createNumberFormatter(0);\n const comps = removeAlphaComponent(value.getComponents('rgb')).map((comp) => formatter(comp));\n return `rgb(${comps.join(', ')})`;\n }\n function colorToFunctionalRgbaString(value) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(0);\n const comps = value.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return formatter(comp);\n });\n return `rgba(${comps.join(', ')})`;\n }\n function colorToFunctionalHslString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n ];\n const comps = removeAlphaComponent(value.getComponents('hsl')).map((comp, index) => formatters[index](comp));\n return `hsl(${comps.join(', ')})`;\n }\n function colorToFunctionalHslaString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n createNumberFormatter(2),\n ];\n const comps = value\n .getComponents('hsl')\n .map((comp, index) => formatters[index](comp));\n return `hsla(${comps.join(', ')})`;\n }\n const NOTATION_TO_STRINGIFIER_MAP = {\n 'func.hsl': colorToFunctionalHslString,\n 'func.hsla': colorToFunctionalHslaString,\n 'func.rgb': colorToFunctionalRgbString,\n 'func.rgba': colorToFunctionalRgbaString,\n 'hex.rgb': colorToHexRgbString,\n 'hex.rgba': colorToHexRgbaString,\n };\n function getColorStringifier(notation) {\n return NOTATION_TO_STRINGIFIER_MAP[notation];\n }\n\n const className$a = ClassName('apl');\n class APaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$a());\n config.viewProps.bindTabIndex(this.element);\n const barElem = doc.createElement('div');\n barElem.classList.add(className$a('b'));\n this.element.appendChild(barElem);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(className$a('c'));\n barElem.appendChild(colorElem);\n this.colorElem_ = colorElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$a('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n const previewElem = doc.createElement('div');\n previewElem.classList.add(className$a('p'));\n this.markerElem_.appendChild(previewElem);\n this.previewElem_ = previewElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const rgbaComps = c.getComponents('rgb');\n const leftColor = new Color([rgbaComps[0], rgbaComps[1], rgbaComps[2], 0], 'rgb');\n const rightColor = new Color([rgbaComps[0], rgbaComps[1], rgbaComps[2], 255], 'rgb');\n const gradientComps = [\n 'to right',\n colorToFunctionalRgbaString(leftColor),\n colorToFunctionalRgbaString(rightColor),\n ];\n this.colorElem_.style.background = `linear-gradient(${gradientComps.join(',')})`;\n this.previewElem_.style.backgroundColor = colorToFunctionalRgbaString(c);\n const left = mapRange(rgbaComps[3], 0, 1, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class APaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new APaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const alpha = d.point.x / d.bounds.width;\n const c = this.value.rawValue;\n const [h, s, v] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h, s, v, alpha], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getBaseStepForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h, s, v, a + step], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getBaseStepForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$9 = ClassName('coltxt');\n function createModeSelectElement(doc) {\n const selectElem = doc.createElement('select');\n const items = [\n { text: 'RGB', value: 'rgb' },\n { text: 'HSL', value: 'hsl' },\n { text: 'HSV', value: 'hsv' },\n ];\n selectElem.appendChild(items.reduce((frag, item) => {\n const optElem = doc.createElement('option');\n optElem.textContent = item.text;\n optElem.value = item.value;\n frag.appendChild(optElem);\n return frag;\n }, doc.createDocumentFragment()));\n return selectElem;\n }\n class ColorTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$9());\n const modeElem = doc.createElement('div');\n modeElem.classList.add(className$9('m'));\n this.modeElem_ = createModeSelectElement(doc);\n this.modeElem_.classList.add(className$9('ms'));\n modeElem.appendChild(this.modeSelectElement);\n const modeMarkerElem = doc.createElement('div');\n modeMarkerElem.classList.add(className$9('mm'));\n modeMarkerElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n modeElem.appendChild(modeMarkerElem);\n this.element.appendChild(modeElem);\n const textsElem = doc.createElement('div');\n textsElem.classList.add(className$9('w'));\n this.element.appendChild(textsElem);\n this.textsElem_ = textsElem;\n this.textViews_ = config.textViews;\n this.applyTextViews_();\n bindValue(config.colorMode, (mode) => {\n this.modeElem_.value = mode;\n });\n }\n get modeSelectElement() {\n return this.modeElem_;\n }\n get textViews() {\n return this.textViews_;\n }\n set textViews(textViews) {\n this.textViews_ = textViews;\n this.applyTextViews_();\n }\n applyTextViews_() {\n removeChildElements(this.textsElem_);\n const doc = this.element.ownerDocument;\n this.textViews_.forEach((v) => {\n const compElem = doc.createElement('div');\n compElem.classList.add(className$9('c'));\n compElem.appendChild(v.element);\n this.textsElem_.appendChild(compElem);\n });\n }\n }\n\n const FORMATTER = createNumberFormatter(0);\n const MODE_TO_CONSTRAINT_MAP = {\n rgb: () => {\n return new RangeConstraint({ min: 0, max: 255 });\n },\n hsl: (index) => {\n return index === 0\n ? new RangeConstraint({ min: 0, max: 360 })\n : new RangeConstraint({ min: 0, max: 100 });\n },\n hsv: (index) => {\n return index === 0\n ? new RangeConstraint({ min: 0, max: 360 })\n : new RangeConstraint({ min: 0, max: 100 });\n },\n };\n function createComponentController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === 3 - 1 ? 'lst' : 'mid',\n baseStep: getBaseStepForColor(false),\n parser: config.parser,\n props: ValueMap.fromObject({\n draggingScale: 1,\n formatter: FORMATTER,\n }),\n value: createValue(0, {\n constraint: MODE_TO_CONSTRAINT_MAP[config.colorMode](index),\n }),\n viewProps: config.viewProps,\n });\n }\n class ColorTextController {\n constructor(doc, config) {\n this.onModeSelectChange_ = this.onModeSelectChange_.bind(this);\n this.parser_ = config.parser;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.colorMode = createValue(this.value.rawValue.mode);\n this.ccs_ = this.createComponentControllers_(doc);\n this.view = new ColorTextView(doc, {\n colorMode: this.colorMode,\n textViews: [this.ccs_[0].view, this.ccs_[1].view, this.ccs_[2].view],\n });\n this.view.modeSelectElement.addEventListener('change', this.onModeSelectChange_);\n }\n createComponentControllers_(doc) {\n const cc = {\n colorMode: this.colorMode.rawValue,\n parser: this.parser_,\n viewProps: this.viewProps,\n };\n const ccs = [\n createComponentController(doc, cc, 0),\n createComponentController(doc, cc, 1),\n createComponentController(doc, cc, 2),\n ];\n ccs.forEach((cs, index) => {\n connectValues({\n primary: this.value,\n secondary: cs.value,\n forward: (p) => {\n return p.rawValue.getComponents(this.colorMode.rawValue)[index];\n },\n backward: (p, s) => {\n const pickedMode = this.colorMode.rawValue;\n const comps = p.rawValue.getComponents(pickedMode);\n comps[index] = s.rawValue;\n return new Color(appendAlphaComponent(removeAlphaComponent(comps), comps[3]), pickedMode);\n },\n });\n });\n return ccs;\n }\n onModeSelectChange_(ev) {\n const selectElem = ev.currentTarget;\n this.colorMode.rawValue = selectElem.value;\n this.ccs_ = this.createComponentControllers_(this.view.element.ownerDocument);\n this.view.textViews = [\n this.ccs_[0].view,\n this.ccs_[1].view,\n this.ccs_[2].view,\n ];\n }\n }\n\n const className$8 = ClassName('hpl');\n class HPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$8());\n config.viewProps.bindTabIndex(this.element);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(className$8('c'));\n this.element.appendChild(colorElem);\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$8('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const [h] = c.getComponents('hsv');\n this.markerElem_.style.backgroundColor = colorToFunctionalRgbString(new Color([h, 100, 100], 'hsv'));\n const left = mapRange(h, 0, 360, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class HPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new HPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const hue = mapRange(d.point.x, 0, d.bounds.width, 0, 360);\n const c = this.value.rawValue;\n const [, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([hue, s, v, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getBaseStepForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h + step, s, v, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getBaseStepForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$7 = ClassName('svp');\n const CANVAS_RESOL = 64;\n class SvPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$7());\n config.viewProps.bindTabIndex(this.element);\n const canvasElem = doc.createElement('canvas');\n canvasElem.height = CANVAS_RESOL;\n canvasElem.width = CANVAS_RESOL;\n canvasElem.classList.add(className$7('c'));\n this.element.appendChild(canvasElem);\n this.canvasElement = canvasElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$7('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const ctx = getCanvasContext(this.canvasElement);\n if (!ctx) {\n return;\n }\n const c = this.value.rawValue;\n const hsvComps = c.getComponents('hsv');\n const width = this.canvasElement.width;\n const height = this.canvasElement.height;\n const imgData = ctx.getImageData(0, 0, width, height);\n const data = imgData.data;\n for (let iy = 0; iy < height; iy++) {\n for (let ix = 0; ix < width; ix++) {\n const s = mapRange(ix, 0, width, 0, 100);\n const v = mapRange(iy, 0, height, 100, 0);\n const rgbComps = hsvToRgb(hsvComps[0], s, v);\n const i = (iy * width + ix) * 4;\n data[i] = rgbComps[0];\n data[i + 1] = rgbComps[1];\n data[i + 2] = rgbComps[2];\n data[i + 3] = 255;\n }\n }\n ctx.putImageData(imgData, 0, 0);\n const left = mapRange(hsvComps[1], 0, 100, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n const top = mapRange(hsvComps[2], 0, 100, 100, 0);\n this.markerElem_.style.top = `${top}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class SvPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SvPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const saturation = mapRange(d.point.x, 0, d.bounds.width, 0, 100);\n const value = mapRange(d.point.y, 0, d.bounds.height, 100, 0);\n const [h, , , a] = this.value.rawValue.getComponents('hsv');\n this.value.setRawValue(new Color([h, saturation, value, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [h, s, v, a] = this.value.rawValue.getComponents('hsv');\n const baseStep = getBaseStepForColor(false);\n const ds = getStepForKey(baseStep, getHorizontalStepKeys(ev));\n const dv = getStepForKey(baseStep, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(new Color([h, s + ds, v + dv, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const baseStep = getBaseStepForColor(false);\n const ds = getStepForKey(baseStep, getHorizontalStepKeys(ev));\n const dv = getStepForKey(baseStep, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n class ColorPickerController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.hPaletteC_ = new HPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.svPaletteC_ = new SvPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.alphaIcs_ = config.supportsAlpha\n ? {\n palette: new APaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n }),\n text: new NumberTextController(doc, {\n parser: parseNumber,\n baseStep: 0.1,\n props: ValueMap.fromObject({\n draggingScale: 0.01,\n formatter: createNumberFormatter(2),\n }),\n value: createValue(0, {\n constraint: new RangeConstraint({ min: 0, max: 1 }),\n }),\n viewProps: this.viewProps,\n }),\n }\n : null;\n if (this.alphaIcs_) {\n connectValues({\n primary: this.value,\n secondary: this.alphaIcs_.text.value,\n forward: (p) => {\n return p.rawValue.getComponents()[3];\n },\n backward: (p, s) => {\n const comps = p.rawValue.getComponents();\n comps[3] = s.rawValue;\n return new Color(comps, p.rawValue.mode);\n },\n });\n }\n this.textC_ = new ColorTextController(doc, {\n parser: parseNumber,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorPickerView(doc, {\n alphaViews: this.alphaIcs_\n ? {\n palette: this.alphaIcs_.palette.view,\n text: this.alphaIcs_.text.view,\n }\n : null,\n hPaletteView: this.hPaletteC_.view,\n supportsAlpha: config.supportsAlpha,\n svPaletteView: this.svPaletteC_.view,\n textView: this.textC_.view,\n });\n }\n get textController() {\n return this.textC_;\n }\n }\n\n const className$6 = ClassName('colsw');\n class ColorSwatchView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.element = doc.createElement('div');\n this.element.classList.add(className$6());\n config.viewProps.bindClassModifiers(this.element);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(className$6('sw'));\n this.element.appendChild(swatchElem);\n this.swatchElem_ = swatchElem;\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$6('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n this.update_();\n }\n update_() {\n const value = this.value.rawValue;\n this.swatchElem_.style.backgroundColor = colorToHexRgbaString(value);\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class ColorSwatchController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ColorSwatchView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n class ColorController {\n constructor(doc, config) {\n this.onButtonBlur_ = this.onButtonBlur_.bind(this);\n this.onButtonClick_ = this.onButtonClick_.bind(this);\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.swatchC_ = new ColorSwatchController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n const buttonElem = this.swatchC_.view.buttonElement;\n buttonElem.addEventListener('blur', this.onButtonBlur_);\n buttonElem.addEventListener('click', this.onButtonClick_);\n this.textC_ = new TextController(doc, {\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: config.formatter,\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorView(doc, {\n foldable: this.foldable_,\n pickerLayout: config.pickerLayout,\n });\n this.view.swatchElement.appendChild(this.swatchC_.view.element);\n this.view.textElement.appendChild(this.textC_.view.element);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const pickerC = new ColorPickerController(doc, {\n supportsAlpha: config.supportsAlpha,\n value: this.value,\n viewProps: this.viewProps,\n });\n pickerC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = pickerC;\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(pickerC.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p.rawValue,\n backward: (_, s) => s.rawValue,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.swatchC_.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.swatchC_.view.buttonElement.focus();\n }\n }\n }\n }\n\n function colorFromObject(value) {\n if (Color.isColorObject(value)) {\n return Color.fromObject(value);\n }\n return Color.black();\n }\n function colorToRgbNumber(value) {\n return removeAlphaComponent(value.getComponents('rgb')).reduce((result, comp) => {\n return (result << 8) | (Math.floor(comp) & 0xff);\n }, 0);\n }\n function colorToRgbaNumber(value) {\n return (value.getComponents('rgb').reduce((result, comp, index) => {\n const hex = Math.floor(index === 3 ? comp * 255 : comp) & 0xff;\n return (result << 8) | hex;\n }, 0) >>> 0);\n }\n function numberToRgbColor(num) {\n return new Color([(num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff], 'rgb');\n }\n function numberToRgbaColor(num) {\n return new Color([\n (num >> 24) & 0xff,\n (num >> 16) & 0xff,\n (num >> 8) & 0xff,\n mapRange(num & 0xff, 0, 255, 0, 1),\n ], 'rgb');\n }\n function colorFromRgbNumber(value) {\n if (typeof value !== 'number') {\n return Color.black();\n }\n return numberToRgbColor(value);\n }\n function colorFromRgbaNumber(value) {\n if (typeof value !== 'number') {\n return Color.black();\n }\n return numberToRgbaColor(value);\n }\n\n function createColorStringWriter(notation) {\n const stringify = getColorStringifier(notation);\n return (target, value) => {\n writePrimitive(target, stringify(value));\n };\n }\n function createColorNumberWriter(supportsAlpha) {\n const colorToNumber = supportsAlpha ? colorToRgbaNumber : colorToRgbNumber;\n return (target, value) => {\n writePrimitive(target, colorToNumber(value));\n };\n }\n function writeRgbaColorObject(target, value) {\n const obj = value.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n target.writeProperty('a', obj.a);\n }\n function writeRgbColorObject(target, value) {\n const obj = value.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n }\n function createColorObjectWriter(supportsAlpha) {\n return supportsAlpha ? writeRgbaColorObject : writeRgbColorObject;\n }\n\n function shouldSupportAlpha$1(inputParams) {\n return 'alpha' in inputParams && inputParams.alpha === true;\n }\n function createFormatter$1(supportsAlpha) {\n return supportsAlpha\n ? (v) => colorToHexRgbaString(v, '0x')\n : (v) => colorToHexRgbString(v, '0x');\n }\n const NumberColorInputPlugin = {\n id: 'input-color-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n if (!('view' in params)) {\n return null;\n }\n if (params.view !== 'color') {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (args) => {\n return shouldSupportAlpha$1(args.params)\n ? colorFromRgbaNumber\n : colorFromRgbNumber;\n },\n equals: Color.equals,\n writer: (args) => {\n return createColorNumberWriter(shouldSupportAlpha$1(args.params));\n },\n },\n controller: (args) => {\n const supportsAlpha = shouldSupportAlpha$1(args.params);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: createFormatter$1(supportsAlpha),\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n function shouldSupportAlpha(initialValue) {\n return Color.isRgbaColorObject(initialValue);\n }\n const ObjectColorInputPlugin = {\n id: 'input-color-object',\n type: 'input',\n accept: (value, params) => {\n if (!Color.isColorObject(value)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => colorFromObject,\n equals: Color.equals,\n writer: (args) => createColorObjectWriter(shouldSupportAlpha(args.initialValue)),\n },\n controller: (args) => {\n const supportsAlpha = Color.isRgbaColorObject(args.initialValue);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n const formatter = supportsAlpha\n ? colorToHexRgbaString\n : colorToHexRgbString;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: formatter,\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const StringColorInputPlugin = {\n id: 'input-color-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n if ('view' in params && params.view === 'text') {\n return null;\n }\n const notation = getColorNotation(value);\n if (!notation) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => colorFromString,\n equals: Color.equals,\n writer: (args) => {\n const notation = getColorNotation(args.initialValue);\n if (!notation) {\n throw TpError.shouldNeverHappen();\n }\n return createColorStringWriter(notation);\n },\n },\n controller: (args) => {\n const notation = getColorNotation(args.initialValue);\n if (!notation) {\n throw TpError.shouldNeverHappen();\n }\n const stringifier = getColorStringifier(notation);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: stringifier,\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: hasAlphaComponent(notation),\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class PointNdConstraint {\n constructor(config) {\n this.components = config.components;\n this.asm_ = config.assembly;\n }\n constrain(value) {\n const comps = this.asm_\n .toComponents(value)\n .map((comp, index) => { var _a, _b; return (_b = (_a = this.components[index]) === null || _a === void 0 ? void 0 : _a.constrain(comp)) !== null && _b !== void 0 ? _b : comp; });\n return this.asm_.fromComponents(comps);\n }\n }\n\n const className$5 = ClassName('pndtxt');\n class PointNdTextView {\n constructor(doc, config) {\n this.textViews = config.textViews;\n this.element = doc.createElement('div');\n this.element.classList.add(className$5());\n this.textViews.forEach((v) => {\n const axisElem = doc.createElement('div');\n axisElem.classList.add(className$5('a'));\n axisElem.appendChild(v.element);\n this.element.appendChild(axisElem);\n });\n }\n }\n\n function createAxisController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === config.axes.length - 1 ? 'lst' : 'mid',\n baseStep: config.axes[index].baseStep,\n parser: config.parser,\n props: config.axes[index].textProps,\n value: createValue(0, {\n constraint: config.axes[index].constraint,\n }),\n viewProps: config.viewProps,\n });\n }\n class PointNdTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.acs_ = config.axes.map((_, index) => createAxisController(doc, config, index));\n this.acs_.forEach((c, index) => {\n connectValues({\n primary: this.value,\n secondary: c.value,\n forward: (p) => {\n return config.assembly.toComponents(p.rawValue)[index];\n },\n backward: (p, s) => {\n const comps = config.assembly.toComponents(p.rawValue);\n comps[index] = s.rawValue;\n return config.assembly.fromComponents(comps);\n },\n });\n });\n this.view = new PointNdTextView(doc, {\n textViews: this.acs_.map((ac) => ac.view),\n });\n }\n }\n\n function createStepConstraint(params) {\n if ('step' in params && !isEmpty(params.step)) {\n return new StepConstraint(params.step);\n }\n return null;\n }\n function createRangeConstraint(params) {\n if (('max' in params && !isEmpty(params.max)) ||\n ('min' in params && !isEmpty(params.min))) {\n return new RangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n return null;\n }\n function createConstraint$4(params) {\n const constraints = [];\n const sc = createStepConstraint(params);\n if (sc) {\n constraints.push(sc);\n }\n const rc = createRangeConstraint(params);\n if (rc) {\n constraints.push(rc);\n }\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n function findRange(constraint) {\n const c = constraint ? findConstraint(constraint, RangeConstraint) : null;\n if (!c) {\n return [undefined, undefined];\n }\n return [c.minValue, c.maxValue];\n }\n function estimateSuitableRange(constraint) {\n const [min, max] = findRange(constraint);\n return [min !== null && min !== void 0 ? min : 0, max !== null && max !== void 0 ? max : 100];\n }\n const NumberInputPlugin = {\n id: 'input-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n format: p.optional.function,\n max: p.optional.number,\n min: p.optional.number,\n options: p.optional.custom(parseListOptions),\n step: p.optional.number,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => numberFromUnknown,\n constraint: (args) => createConstraint$4(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a, _b;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(args.document, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n const formatter = (_b = ('format' in args.params ? args.params.format : undefined)) !== null && _b !== void 0 ? _b : createNumberFormatter(getSuitableDecimalDigits(c, value.rawValue));\n if (c && findConstraint(c, RangeConstraint)) {\n const [min, max] = estimateSuitableRange(c);\n return new SliderTextController(args.document, {\n baseStep: getBaseStep(c),\n parser: parseNumber,\n sliderProps: ValueMap.fromObject({\n maxValue: max,\n minValue: min,\n }),\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(c, value.rawValue),\n formatter: formatter,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new NumberTextController(args.document, {\n baseStep: getBaseStep(c),\n parser: parseNumber,\n props: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(c, value.rawValue),\n formatter: formatter,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point2d {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n getComponents() {\n return [this.x, this.y];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n if (typeof x !== 'number' || typeof y !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n };\n }\n }\n const Point2dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point2d(...comps),\n };\n\n const className$4 = ClassName('p2d');\n class Point2dView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$4());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.expanded, valueToClassName(this.element, className$4(undefined, 'expanded')));\n const headElem = doc.createElement('div');\n headElem.classList.add(className$4('h'));\n this.element.appendChild(headElem);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$4('b'));\n buttonElem.appendChild(createSvgIconElement(doc, 'p2dpad'));\n config.viewProps.bindDisabled(buttonElem);\n headElem.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$4('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(className$4('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n }\n\n const className$3 = ClassName('p2dp');\n class Point2dPickerView {\n constructor(doc, config) {\n this.onFoldableChange_ = this.onFoldableChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.invertsY_ = config.invertsY;\n this.maxValue_ = config.maxValue;\n this.element = doc.createElement('div');\n this.element.classList.add(className$3());\n if (config.layout === 'popup') {\n this.element.classList.add(className$3(undefined, 'p'));\n }\n const padElem = doc.createElement('div');\n padElem.classList.add(className$3('p'));\n config.viewProps.bindTabIndex(padElem);\n this.element.appendChild(padElem);\n this.padElement = padElem;\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className$3('g'));\n this.padElement.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const xAxisElem = doc.createElementNS(SVG_NS, 'line');\n xAxisElem.classList.add(className$3('ax'));\n xAxisElem.setAttributeNS(null, 'x1', '0');\n xAxisElem.setAttributeNS(null, 'y1', '50%');\n xAxisElem.setAttributeNS(null, 'x2', '100%');\n xAxisElem.setAttributeNS(null, 'y2', '50%');\n this.svgElem_.appendChild(xAxisElem);\n const yAxisElem = doc.createElementNS(SVG_NS, 'line');\n yAxisElem.classList.add(className$3('ax'));\n yAxisElem.setAttributeNS(null, 'x1', '50%');\n yAxisElem.setAttributeNS(null, 'y1', '0');\n yAxisElem.setAttributeNS(null, 'x2', '50%');\n yAxisElem.setAttributeNS(null, 'y2', '100%');\n this.svgElem_.appendChild(yAxisElem);\n const lineElem = doc.createElementNS(SVG_NS, 'line');\n lineElem.classList.add(className$3('l'));\n lineElem.setAttributeNS(null, 'x1', '50%');\n lineElem.setAttributeNS(null, 'y1', '50%');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$3('m'));\n this.padElement.appendChild(markerElem);\n this.markerElem_ = markerElem;\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n get allFocusableElements() {\n return [this.padElement];\n }\n update_() {\n const [x, y] = this.value.rawValue.getComponents();\n const max = this.maxValue_;\n const px = mapRange(x, -max, +max, 0, 100);\n const py = mapRange(y, -max, +max, 0, 100);\n const ipy = this.invertsY_ ? 100 - py : py;\n this.lineElem_.setAttributeNS(null, 'x2', `${px}%`);\n this.lineElem_.setAttributeNS(null, 'y2', `${ipy}%`);\n this.markerElem_.style.left = `${px}%`;\n this.markerElem_.style.top = `${ipy}%`;\n }\n onValueChange_() {\n this.update_();\n }\n onFoldableChange_() {\n this.update_();\n }\n }\n\n function computeOffset(ev, baseSteps, invertsY) {\n return [\n getStepForKey(baseSteps[0], getHorizontalStepKeys(ev)),\n getStepForKey(baseSteps[1], getVerticalStepKeys(ev)) * (invertsY ? 1 : -1),\n ];\n }\n class Point2dPickerController {\n constructor(doc, config) {\n this.onPadKeyDown_ = this.onPadKeyDown_.bind(this);\n this.onPadKeyUp_ = this.onPadKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.baseSteps_ = config.baseSteps;\n this.maxValue_ = config.maxValue;\n this.invertsY_ = config.invertsY;\n this.view = new Point2dPickerView(doc, {\n invertsY: this.invertsY_,\n layout: config.layout,\n maxValue: this.maxValue_,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.padElement);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.padElement.addEventListener('keydown', this.onPadKeyDown_);\n this.view.padElement.addEventListener('keyup', this.onPadKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const max = this.maxValue_;\n const px = mapRange(d.point.x, 0, d.bounds.width, -max, +max);\n const py = mapRange(this.invertsY_ ? d.bounds.height - d.point.y : d.point.y, 0, d.bounds.height, -max, +max);\n this.value.setRawValue(new Point2d(px, py), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onPadKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [dx, dy] = computeOffset(ev, this.baseSteps_, this.invertsY_);\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(new Point2d(this.value.rawValue.x + dx, this.value.rawValue.y + dy), {\n forceEmit: false,\n last: false,\n });\n }\n onPadKeyUp_(ev) {\n const [dx, dy] = computeOffset(ev, this.baseSteps_, this.invertsY_);\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n class Point2dController {\n constructor(doc, config) {\n var _a, _b;\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.onPadButtonBlur_ = this.onPadButtonBlur_.bind(this);\n this.onPadButtonClick_ = this.onPadButtonClick_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const padC = new Point2dPickerController(doc, {\n baseSteps: [config.axes[0].baseStep, config.axes[1].baseStep],\n invertsY: config.invertsY,\n layout: config.pickerLayout,\n maxValue: config.maxValue,\n value: this.value,\n viewProps: this.viewProps,\n });\n padC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = padC;\n this.textC_ = new PointNdTextController(doc, {\n assembly: Point2dAssembly,\n axes: config.axes,\n parser: config.parser,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new Point2dView(doc, {\n expanded: this.foldable_.value('expanded'),\n pickerLayout: config.pickerLayout,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.textC_.view.element);\n (_a = this.view.buttonElement) === null || _a === void 0 ? void 0 : _a.addEventListener('blur', this.onPadButtonBlur_);\n (_b = this.view.buttonElement) === null || _b === void 0 ? void 0 : _b.addEventListener('click', this.onPadButtonClick_);\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(this.pickerC_.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p.rawValue,\n backward: (_, s) => s.rawValue,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n onPadButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onPadButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.view.buttonElement.focus();\n }\n }\n }\n }\n\n function point2dFromUnknown(value) {\n return Point2d.isObject(value)\n ? new Point2d(value.x, value.y)\n : new Point2d();\n }\n function writePoint2d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n }\n\n function createDimensionConstraint$2(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$3(params) {\n return new PointNdConstraint({\n assembly: Point2dAssembly,\n components: [\n createDimensionConstraint$2('x' in params ? params.x : undefined),\n createDimensionConstraint$2('y' in params ? params.y : undefined),\n ],\n });\n }\n function getSuitableMaxDimensionValue(constraint, rawValue) {\n const rc = constraint && findConstraint(constraint, RangeConstraint);\n if (rc) {\n return Math.max(Math.abs(rc.minValue || 0), Math.abs(rc.maxValue || 0));\n }\n const step = getBaseStep(constraint);\n return Math.max(Math.abs(step) * 10, Math.abs(rawValue) * 10);\n }\n function getSuitableMaxValue(initialValue, constraint) {\n const xc = constraint instanceof PointNdConstraint\n ? constraint.components[0]\n : undefined;\n const yc = constraint instanceof PointNdConstraint\n ? constraint.components[1]\n : undefined;\n const xr = getSuitableMaxDimensionValue(xc, initialValue.x);\n const yr = getSuitableMaxDimensionValue(yc, initialValue.y);\n return Math.max(xr, yr);\n }\n function createAxis$2(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n function shouldInvertY(params) {\n if (!('y' in params)) {\n return false;\n }\n const yParams = params.y;\n if (!yParams) {\n return false;\n }\n return 'inverted' in yParams ? !!yParams.inverted : false;\n }\n const Point2dInputPlugin = {\n id: 'input-point2d',\n type: 'input',\n accept: (value, params) => {\n if (!Point2d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.object({\n inverted: p.optional.boolean,\n max: p.optional.number,\n min: p.optional.number,\n step: p.optional.number,\n }),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point2dFromUnknown,\n constraint: (args) => createConstraint$3(args.params),\n equals: Point2d.equals,\n writer: (_args) => writePoint2d,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new Point2dController(doc, {\n axes: [\n createAxis$2(value.rawValue.x, c.components[0]),\n createAxis$2(value.rawValue.y, c.components[1]),\n ],\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n invertsY: shouldInvertY(args.params),\n maxValue: getSuitableMaxValue(value.rawValue, c),\n parser: parseNumber,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point3d {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n getComponents() {\n return [this.x, this.y, this.z];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n };\n }\n }\n const Point3dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point3d(...comps),\n };\n\n function point3dFromUnknown(value) {\n return Point3d.isObject(value)\n ? new Point3d(value.x, value.y, value.z)\n : new Point3d();\n }\n function writePoint3d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n }\n\n function createDimensionConstraint$1(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$2(params) {\n return new PointNdConstraint({\n assembly: Point3dAssembly,\n components: [\n createDimensionConstraint$1('x' in params ? params.x : undefined),\n createDimensionConstraint$1('y' in params ? params.y : undefined),\n createDimensionConstraint$1('z' in params ? params.z : undefined),\n ],\n });\n }\n function createAxis$1(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n const Point3dInputPlugin = {\n id: 'input-point3d',\n type: 'input',\n accept: (value, params) => {\n if (!Point3d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.custom(parsePointDimensionParams),\n z: p.optional.custom(parsePointDimensionParams),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point3dFromUnknown,\n constraint: (args) => createConstraint$2(args.params),\n equals: Point3d.equals,\n writer: (_args) => writePoint3d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n return new PointNdTextController(args.document, {\n assembly: Point3dAssembly,\n axes: [\n createAxis$1(value.rawValue.x, c.components[0]),\n createAxis$1(value.rawValue.y, c.components[1]),\n createAxis$1(value.rawValue.z, c.components[2]),\n ],\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point4d {\n constructor(x = 0, y = 0, z = 0, w = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n getComponents() {\n return [this.x, this.y, this.z, this.w];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n const w = obj.w;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number' ||\n typeof w !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z && v1.w === v2.w;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n w: this.w,\n };\n }\n }\n const Point4dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point4d(...comps),\n };\n\n function point4dFromUnknown(value) {\n return Point4d.isObject(value)\n ? new Point4d(value.x, value.y, value.z, value.w)\n : new Point4d();\n }\n function writePoint4d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n target.writeProperty('w', value.w);\n }\n\n function createDimensionConstraint(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$1(params) {\n return new PointNdConstraint({\n assembly: Point4dAssembly,\n components: [\n createDimensionConstraint('x' in params ? params.x : undefined),\n createDimensionConstraint('y' in params ? params.y : undefined),\n createDimensionConstraint('z' in params ? params.z : undefined),\n createDimensionConstraint('w' in params ? params.w : undefined),\n ],\n });\n }\n function createAxis(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n const Point4dInputPlugin = {\n id: 'input-point4d',\n type: 'input',\n accept: (value, params) => {\n if (!Point4d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.custom(parsePointDimensionParams),\n z: p.optional.custom(parsePointDimensionParams),\n w: p.optional.custom(parsePointDimensionParams),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point4dFromUnknown,\n constraint: (args) => createConstraint$1(args.params),\n equals: Point4d.equals,\n writer: (_args) => writePoint4d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n return new PointNdTextController(args.document, {\n assembly: Point4dAssembly,\n axes: value.rawValue\n .getComponents()\n .map((comp, index) => createAxis(comp, c.components[index])),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n function createConstraint(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n const StringInputPlugin = {\n id: 'input-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.optional.custom(parseListOptions),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n constraint: (args) => createConstraint(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(doc, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new TextController(doc, {\n parser: (v) => v,\n props: ValueMap.fromObject({\n formatter: formatString,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const Constants = {\n monitor: {\n defaultInterval: 200,\n defaultLineCount: 3,\n },\n };\n\n const className$2 = ClassName('mll');\n class MultiLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(className$2());\n config.viewProps.bindClassModifiers(this.element);\n const textareaElem = doc.createElement('textarea');\n textareaElem.classList.add(className$2('i'));\n textareaElem.style.height = `calc(var(--bld-us) * ${config.lineCount})`;\n textareaElem.readOnly = true;\n config.viewProps.bindDisabled(textareaElem);\n this.element.appendChild(textareaElem);\n this.textareaElem_ = textareaElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const elem = this.textareaElem_;\n const shouldScroll = elem.scrollTop === elem.scrollHeight - elem.clientHeight;\n const lines = [];\n this.value.rawValue.forEach((value) => {\n if (value !== undefined) {\n lines.push(this.formatter_(value));\n }\n });\n elem.textContent = lines.join('\\n');\n if (shouldScroll) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n }\n\n class MultiLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new MultiLogView(doc, {\n formatter: config.formatter,\n lineCount: config.lineCount,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n const className$1 = ClassName('sgl');\n class SingleLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(className$1());\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$1('i'));\n inputElem.readOnly = true;\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const values = this.value.rawValue;\n const lastValue = values[values.length - 1];\n this.inputElement.value =\n lastValue !== undefined ? this.formatter_(lastValue) : '';\n }\n onValueUpdate_() {\n this.update_();\n }\n }\n\n class SingleLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SingleLogView(doc, {\n formatter: config.formatter,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n const BooleanMonitorPlugin = {\n id: 'monitor-bool',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n lineCount: p.optional.number,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n },\n controller: (args) => {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: BooleanFormatter,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: BooleanFormatter,\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class GraphCursor {\n constructor() {\n this.emitter = new Emitter();\n this.index_ = -1;\n }\n get index() {\n return this.index_;\n }\n set index(index) {\n const changed = this.index_ !== index;\n if (changed) {\n this.index_ = index;\n this.emitter.emit('change', {\n index: index,\n sender: this,\n });\n }\n }\n }\n\n const className = ClassName('grl');\n class GraphLogView {\n constructor(doc, config) {\n this.onCursorChange_ = this.onCursorChange_.bind(this);\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className());\n config.viewProps.bindClassModifiers(this.element);\n this.formatter_ = config.formatter;\n this.minValue_ = config.minValue;\n this.maxValue_ = config.maxValue;\n this.cursor_ = config.cursor;\n this.cursor_.emitter.on('change', this.onCursorChange_);\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className('g'));\n svgElem.style.height = `calc(var(--bld-us) * ${config.lineCount})`;\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const lineElem = doc.createElementNS(SVG_NS, 'polyline');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(className('t'), ClassName('tt')());\n this.element.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n get graphElement() {\n return this.svgElem_;\n }\n update_() {\n const bounds = this.svgElem_.getBoundingClientRect();\n const maxIndex = this.value.rawValue.length - 1;\n const min = this.minValue_;\n const max = this.maxValue_;\n const points = [];\n this.value.rawValue.forEach((v, index) => {\n if (v === undefined) {\n return;\n }\n const x = mapRange(index, 0, maxIndex, 0, bounds.width);\n const y = mapRange(v, min, max, bounds.height, 0);\n points.push([x, y].join(','));\n });\n this.lineElem_.setAttributeNS(null, 'points', points.join(' '));\n const tooltipElem = this.tooltipElem_;\n const value = this.value.rawValue[this.cursor_.index];\n if (value === undefined) {\n tooltipElem.classList.remove(className('t', 'a'));\n return;\n }\n const tx = mapRange(this.cursor_.index, 0, maxIndex, 0, bounds.width);\n const ty = mapRange(value, min, max, bounds.height, 0);\n tooltipElem.style.left = `${tx}px`;\n tooltipElem.style.top = `${ty}px`;\n tooltipElem.textContent = `${this.formatter_(value)}`;\n if (!tooltipElem.classList.contains(className('t', 'a'))) {\n tooltipElem.classList.add(className('t', 'a'), className('t', 'in'));\n forceReflow(tooltipElem);\n tooltipElem.classList.remove(className('t', 'in'));\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n onCursorChange_() {\n this.update_();\n }\n }\n\n class GraphLogController {\n constructor(doc, config) {\n this.onGraphMouseMove_ = this.onGraphMouseMove_.bind(this);\n this.onGraphMouseLeave_ = this.onGraphMouseLeave_.bind(this);\n this.onGraphPointerDown_ = this.onGraphPointerDown_.bind(this);\n this.onGraphPointerMove_ = this.onGraphPointerMove_.bind(this);\n this.onGraphPointerUp_ = this.onGraphPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.cursor_ = new GraphCursor();\n this.view = new GraphLogView(doc, {\n cursor: this.cursor_,\n formatter: config.formatter,\n lineCount: config.lineCount,\n maxValue: config.maxValue,\n minValue: config.minValue,\n value: this.value,\n viewProps: this.viewProps,\n });\n if (!supportsTouch(doc)) {\n this.view.element.addEventListener('mousemove', this.onGraphMouseMove_);\n this.view.element.addEventListener('mouseleave', this.onGraphMouseLeave_);\n }\n else {\n const ph = new PointerHandler(this.view.element);\n ph.emitter.on('down', this.onGraphPointerDown_);\n ph.emitter.on('move', this.onGraphPointerMove_);\n ph.emitter.on('up', this.onGraphPointerUp_);\n }\n }\n onGraphMouseLeave_() {\n this.cursor_.index = -1;\n }\n onGraphMouseMove_(ev) {\n const bounds = this.view.element.getBoundingClientRect();\n this.cursor_.index = Math.floor(mapRange(ev.offsetX, 0, bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerDown_(ev) {\n this.onGraphPointerMove_(ev);\n }\n onGraphPointerMove_(ev) {\n if (!ev.data.point) {\n this.cursor_.index = -1;\n return;\n }\n this.cursor_.index = Math.floor(mapRange(ev.data.point.x, 0, ev.data.bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerUp_() {\n this.cursor_.index = -1;\n }\n }\n\n function createFormatter(params) {\n return 'format' in params && !isEmpty(params.format)\n ? params.format\n : createNumberFormatter(2);\n }\n function createTextMonitor(args) {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: createFormatter(args.params),\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: createFormatter(args.params),\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n function createGraphMonitor(args) {\n var _a, _b, _c;\n return new GraphLogController(args.document, {\n formatter: createFormatter(args.params),\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n maxValue: (_b = ('max' in args.params ? args.params.max : null)) !== null && _b !== void 0 ? _b : 100,\n minValue: (_c = ('min' in args.params ? args.params.min : null)) !== null && _c !== void 0 ? _c : 0,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n function shouldShowGraph(params) {\n return 'view' in params && params.view === 'graph';\n }\n const NumberMonitorPlugin = {\n id: 'monitor-number',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n format: p.optional.function,\n lineCount: p.optional.number,\n max: p.optional.number,\n min: p.optional.number,\n view: p.optional.string,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n defaultBufferSize: (params) => (shouldShowGraph(params) ? 64 : 1),\n reader: (_args) => numberFromUnknown,\n },\n controller: (args) => {\n if (shouldShowGraph(args.params)) {\n return createGraphMonitor(args);\n }\n return createTextMonitor(args);\n },\n };\n\n const StringMonitorPlugin = {\n id: 'monitor-string',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n lineCount: p.optional.number,\n multiline: p.optional.boolean,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n },\n controller: (args) => {\n var _a;\n const value = args.value;\n const multiline = value.rawValue.length > 1 ||\n ('multiline' in args.params && args.params.multiline);\n if (multiline) {\n return new MultiLogController(args.document, {\n formatter: formatString,\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new SingleLogController(args.document, {\n formatter: formatString,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class InputBinding {\n constructor(config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.reader = config.reader;\n this.writer = config.writer;\n this.emitter = new Emitter();\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.target = config.target;\n this.read();\n }\n read() {\n const targetValue = this.target.read();\n if (targetValue !== undefined) {\n this.value.rawValue = this.reader(targetValue);\n }\n }\n write_(rawValue) {\n this.writer(this.target, rawValue);\n }\n onValueChange_(ev) {\n this.write_(ev.rawValue);\n this.emitter.emit('change', {\n options: ev.options,\n rawValue: ev.rawValue,\n sender: this,\n });\n }\n }\n\n function createInputBindingController(plugin, args) {\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const p = ParamsParsers;\n const valueArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const reader = plugin.binding.reader(valueArgs);\n const constraint = plugin.binding.constraint\n ? plugin.binding.constraint(valueArgs)\n : undefined;\n const value = createValue(reader(result.initialValue), {\n constraint: constraint,\n equals: plugin.binding.equals,\n });\n const binding = new InputBinding({\n reader: reader,\n target: args.target,\n value: value,\n writer: plugin.binding.writer(valueArgs),\n });\n const disabled = p.optional.boolean(args.params.disabled).value;\n const hidden = p.optional.boolean(args.params.hidden).value;\n const controller = plugin.controller({\n constraint: constraint,\n document: args.document,\n initialValue: result.initialValue,\n params: result.params,\n value: binding.value,\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n const label = p.optional.string(args.params.label).value;\n return new InputBindingController(args.document, {\n binding: binding,\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: label || args.target.key,\n }),\n valueController: controller,\n });\n }\n\n class MonitorBinding {\n constructor(config) {\n this.onTick_ = this.onTick_.bind(this);\n this.reader_ = config.reader;\n this.target = config.target;\n this.emitter = new Emitter();\n this.value = config.value;\n this.ticker = config.ticker;\n this.ticker.emitter.on('tick', this.onTick_);\n this.read();\n }\n dispose() {\n this.ticker.dispose();\n }\n read() {\n const targetValue = this.target.read();\n if (targetValue === undefined) {\n return;\n }\n const buffer = this.value.rawValue;\n const newValue = this.reader_(targetValue);\n this.value.rawValue = createPushedBuffer(buffer, newValue);\n this.emitter.emit('update', {\n rawValue: newValue,\n sender: this,\n });\n }\n onTick_(_) {\n this.read();\n }\n }\n\n function createTicker(document, interval) {\n return interval === 0\n ? new ManualTicker()\n : new IntervalTicker(document, interval !== null && interval !== void 0 ? interval : Constants.monitor.defaultInterval);\n }\n function createMonitorBindingController(plugin, args) {\n var _a, _b, _c;\n const P = ParamsParsers;\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const bindingArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const reader = plugin.binding.reader(bindingArgs);\n const bufferSize = (_b = (_a = P.optional.number(args.params.bufferSize).value) !== null && _a !== void 0 ? _a : (plugin.binding.defaultBufferSize &&\n plugin.binding.defaultBufferSize(result.params))) !== null && _b !== void 0 ? _b : 1;\n const interval = P.optional.number(args.params.interval).value;\n const binding = new MonitorBinding({\n reader: reader,\n target: args.target,\n ticker: createTicker(args.document, interval),\n value: initializeBuffer(bufferSize),\n });\n const disabled = P.optional.boolean(args.params.disabled).value;\n const hidden = P.optional.boolean(args.params.hidden).value;\n const controller = plugin.controller({\n document: args.document,\n params: result.params,\n value: binding.value,\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n const label = (_c = P.optional.string(args.params.label).value) !== null && _c !== void 0 ? _c : args.target.key;\n return new MonitorBindingController(args.document, {\n binding: binding,\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: label,\n }),\n valueController: controller,\n });\n }\n\n class PluginPool {\n constructor() {\n this.pluginsMap_ = {\n blades: [],\n inputs: [],\n monitors: [],\n };\n }\n getAll() {\n return [\n ...this.pluginsMap_.blades,\n ...this.pluginsMap_.inputs,\n ...this.pluginsMap_.monitors,\n ];\n }\n register(r) {\n if (r.type === 'blade') {\n this.pluginsMap_.blades.unshift(r);\n }\n else if (r.type === 'input') {\n this.pluginsMap_.inputs.unshift(r);\n }\n else if (r.type === 'monitor') {\n this.pluginsMap_.monitors.unshift(r);\n }\n }\n createInput(document, target, params) {\n const initialValue = target.read();\n if (isEmpty(initialValue)) {\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n const bc = this.pluginsMap_.inputs.reduce((result, plugin) => result ||\n createInputBindingController(plugin, {\n document: document,\n target: target,\n params: params,\n }), null);\n if (bc) {\n return bc;\n }\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n createMonitor(document, target, params) {\n const bc = this.pluginsMap_.monitors.reduce((result, plugin) => result ||\n createMonitorBindingController(plugin, {\n document: document,\n params: params,\n target: target,\n }), null);\n if (bc) {\n return bc;\n }\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n createBlade(document, params) {\n const bc = this.pluginsMap_.blades.reduce((result, plugin) => result ||\n createBladeController(plugin, {\n document: document,\n params: params,\n }), null);\n if (!bc) {\n throw new TpError({\n type: 'nomatchingview',\n context: {\n params: params,\n },\n });\n }\n return bc;\n }\n createBladeApi(bc) {\n if (bc instanceof InputBindingController) {\n return new InputBindingApi(bc);\n }\n if (bc instanceof MonitorBindingController) {\n return new MonitorBindingApi(bc);\n }\n if (bc instanceof RackController) {\n return new RackApi(bc, this);\n }\n const api = this.pluginsMap_.blades.reduce((result, plugin) => result ||\n plugin.api({\n controller: bc,\n pool: this,\n }), null);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n }\n\n function createDefaultPluginPool() {\n const pool = new PluginPool();\n [\n Point2dInputPlugin,\n Point3dInputPlugin,\n Point4dInputPlugin,\n StringInputPlugin,\n NumberInputPlugin,\n StringColorInputPlugin,\n ObjectColorInputPlugin,\n NumberColorInputPlugin,\n BooleanInputPlugin,\n BooleanMonitorPlugin,\n StringMonitorPlugin,\n NumberMonitorPlugin,\n ButtonBladePlugin,\n FolderBladePlugin,\n SeparatorBladePlugin,\n TabBladePlugin,\n ].forEach((p) => {\n pool.register(p);\n });\n return pool;\n }\n\n class ListApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get options() {\n return this.controller_.valueController.props.get('options');\n }\n set options(options) {\n this.controller_.valueController.props.set('options', options);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class SliderApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get maxValue() {\n return this.controller_.valueController.sliderController.props.get('maxValue');\n }\n set maxValue(maxValue) {\n this.controller_.valueController.sliderController.props.set('maxValue', maxValue);\n }\n get minValue() {\n return this.controller_.valueController.sliderController.props.get('minValue');\n }\n set minValue(minValue) {\n this.controller_.valueController.sliderController.props.set('minValue', minValue);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class TextApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get formatter() {\n return this.controller_.valueController.props.get('formatter');\n }\n set formatter(formatter) {\n this.controller_.valueController.props.set('formatter', formatter);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n const ListBladePlugin = (function () {\n return {\n id: 'list',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.required.custom(parseListOptions),\n value: p.required.raw,\n view: p.required.constant('list'),\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n const ic = new ListController(args.document, {\n props: ValueMap.fromObject({\n options: normalizeListOptions(args.params.options),\n }),\n value: createValue(args.params.value),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof ListController)) {\n return null;\n }\n return new ListApi(args.controller);\n },\n };\n })();\n\n /**\n * @hidden\n */\n function exportPresetJson(targets) {\n return targets.reduce((result, target) => {\n return Object.assign(result, {\n [target.presetKey]: target.read(),\n });\n }, {});\n }\n /**\n * @hidden\n */\n function importPresetJson(targets, preset) {\n targets.forEach((target) => {\n const value = preset[target.presetKey];\n if (value !== undefined) {\n target.write(value);\n }\n });\n }\n\n class RootApi extends FolderApi {\n /**\n * @hidden\n */\n constructor(controller, pool) {\n super(controller, pool);\n }\n get element() {\n return this.controller_.view.element;\n }\n /**\n * Imports a preset of all inputs.\n * @param preset The preset object to import.\n */\n importPreset(preset) {\n const targets = this.controller_.rackController.rack\n .find(InputBindingController)\n .map((ibc) => {\n return ibc.binding.target;\n });\n importPresetJson(targets, preset);\n this.refresh();\n }\n /**\n * Exports a preset of all inputs.\n * @return An exported preset object.\n */\n exportPreset() {\n const targets = this.controller_.rackController.rack\n .find(InputBindingController)\n .map((ibc) => {\n return ibc.binding.target;\n });\n return exportPresetJson(targets);\n }\n /**\n * Refreshes all bindings of the pane.\n */\n refresh() {\n // Force-read all input bindings\n this.controller_.rackController.rack\n .find(InputBindingController)\n .forEach((ibc) => {\n ibc.binding.read();\n });\n // Force-read all monitor bindings\n this.controller_.rackController.rack\n .find(MonitorBindingController)\n .forEach((mbc) => {\n mbc.binding.read();\n });\n }\n }\n\n class RootController extends FolderController {\n constructor(doc, config) {\n super(doc, {\n expanded: config.expanded,\n blade: config.blade,\n props: config.props,\n root: true,\n viewProps: config.viewProps,\n });\n }\n }\n\n const SliderBladePlugin = {\n id: 'slider',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n max: p.required.number,\n min: p.required.number,\n view: p.required.constant('slider'),\n format: p.optional.function,\n label: p.optional.string,\n value: p.optional.number,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a, _b;\n const v = (_a = args.params.value) !== null && _a !== void 0 ? _a : 0;\n const vc = new SliderTextController(args.document, {\n baseStep: 1,\n parser: parseNumber,\n sliderProps: ValueMap.fromObject({\n maxValue: args.params.max,\n minValue: args.params.min,\n }),\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(undefined, v),\n formatter: (_b = args.params.format) !== null && _b !== void 0 ? _b : numberToString,\n }),\n value: createValue(v),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: vc,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof SliderTextController)) {\n return null;\n }\n return new SliderApi(args.controller);\n },\n };\n\n const TextBladePlugin = (function () {\n return {\n id: 'text',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n parse: p.required.function,\n value: p.required.raw,\n view: p.required.constant('text'),\n format: p.optional.function,\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a;\n const ic = new TextController(args.document, {\n parser: args.params.parse,\n props: ValueMap.fromObject({\n formatter: (_a = args.params.format) !== null && _a !== void 0 ? _a : ((v) => String(v)),\n }),\n value: createValue(args.params.value),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof TextController)) {\n return null;\n }\n return new TextApi(args.controller);\n },\n };\n })();\n\n function createDefaultWrapperElement(doc) {\n const elem = doc.createElement('div');\n elem.classList.add(ClassName('dfw')());\n if (doc.body) {\n doc.body.appendChild(elem);\n }\n return elem;\n }\n function embedStyle(doc, id, css) {\n if (doc.querySelector(`style[data-tp-style=${id}]`)) {\n return;\n }\n const styleElem = doc.createElement('style');\n styleElem.dataset.tpStyle = id;\n styleElem.textContent = css;\n doc.head.appendChild(styleElem);\n }\n /**\n * The root pane of Tweakpane.\n */\n class Pane extends RootApi {\n constructor(opt_config) {\n var _a;\n const config = opt_config || {};\n const doc = (_a = config.document) !== null && _a !== void 0 ? _a : getWindowDocument();\n const pool = createDefaultPluginPool();\n const rootController = new RootController(doc, {\n expanded: config.expanded,\n blade: createBlade(),\n props: ValueMap.fromObject({\n title: config.title,\n }),\n viewProps: ViewProps.create(),\n });\n super(rootController, pool);\n this.pool_ = pool;\n this.containerElem_ = config.container || createDefaultWrapperElement(doc);\n this.containerElem_.appendChild(this.element);\n this.doc_ = doc;\n this.usesDefaultWrapper_ = !config.container;\n this.setUpDefaultPlugins_();\n }\n get document() {\n if (!this.doc_) {\n throw TpError.alreadyDisposed();\n }\n return this.doc_;\n }\n dispose() {\n const containerElem = this.containerElem_;\n if (!containerElem) {\n throw TpError.alreadyDisposed();\n }\n if (this.usesDefaultWrapper_) {\n const parentElem = containerElem.parentElement;\n if (parentElem) {\n parentElem.removeChild(containerElem);\n }\n }\n this.containerElem_ = null;\n this.doc_ = null;\n super.dispose();\n }\n registerPlugin(bundle) {\n const plugins = 'plugin' in bundle\n ? [bundle.plugin]\n : 'plugins' in bundle\n ? bundle.plugins\n : [];\n plugins.forEach((p) => {\n this.pool_.register(p);\n this.embedPluginStyle_(p);\n });\n }\n embedPluginStyle_(plugin) {\n if (plugin.css) {\n embedStyle(this.document, `plugin-${plugin.id}`, plugin.css);\n }\n }\n setUpDefaultPlugins_() {\n // NOTE: This string literal will be replaced with the default CSS by Rollup at the compilation time\n embedStyle(this.document, 'default', '.tp-lstv_s,.tp-btnv_b,.tp-p2dv_b,.tp-colswv_sw,.tp-p2dpv_p,.tp-txtv_i,.tp-grlv_g,.tp-sglv_i,.tp-mllv_i,.tp-fldv_b,.tp-rotv_b,.tp-ckbv_i,.tp-coltxtv_ms,.tp-tbiv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-lstv_s,.tp-btnv_b,.tp-p2dv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-lstv_s:hover,.tp-btnv_b:hover,.tp-p2dv_b:hover{background-color:var(--btn-bg-h)}.tp-lstv_s:focus,.tp-btnv_b:focus,.tp-p2dv_b:focus{background-color:var(--btn-bg-f)}.tp-lstv_s:active,.tp-btnv_b:active,.tp-p2dv_b:active{background-color:var(--btn-bg-a)}.tp-lstv_s:disabled,.tp-btnv_b:disabled,.tp-p2dv_b:disabled{opacity:0.5}.tp-colswv_sw,.tp-p2dpv_p,.tp-txtv_i{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-colswv_sw:hover,.tp-p2dpv_p:hover,.tp-txtv_i:hover{background-color:var(--in-bg-h)}.tp-colswv_sw:focus,.tp-p2dpv_p:focus,.tp-txtv_i:focus{background-color:var(--in-bg-f)}.tp-colswv_sw:active,.tp-p2dpv_p:active,.tp-txtv_i:active{background-color:var(--in-bg-a)}.tp-colswv_sw:disabled,.tp-p2dpv_p:disabled,.tp-txtv_i:disabled{opacity:0.5}.tp-grlv_g,.tp-sglv_i,.tp-mllv_i{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);width:100%}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono,Source Code Pro,Menlo,Courier,monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, #2f3137);--bs-sh: var(--tp-base-shadow-color, rgba(0,0,0,0.2));--btn-bg: var(--tp-button-background-color, #adafb8);--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, #2f3137);--cnt-bg: var(--tp-container-background-color, rgba(187,188,196,0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187,188,196,0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187,188,196,0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187,188,196,0.15));--cnt-fg: var(--tp-container-foreground-color, #bbbcc4);--in-bg: var(--tp-input-background-color, rgba(187,188,196,0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187,188,196,0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187,188,196,0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187,188,196,0.15));--in-fg: var(--tp-input-foreground-color, #bbbcc4);--lbl-fg: var(--tp-label-foreground-color, rgba(187,188,196,0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0,0,0,0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187,188,196,0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(0,0,0,0.2))}.tp-fldv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-rotv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1 * var(--cnt-v-p))}.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-fldv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-rotv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-fldv_c>.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv{margin-left:4px}.tp-fldv_c>.tp-fldv>.tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-fldv_c .tp-fldv>.tp-fldv_c,.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-fldv_c>.tp-tabv>.tp-tabv_i,.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-fldv_c .tp-tabv>.tp-tabv_c,.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-fldv_b,.tp-rotv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(2px * 2 + var(--bld-us) + var(--cnt-h-p));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-fldv_b:hover,.tp-rotv_b:hover{background-color:var(--cnt-bg-h)}.tp-fldv_b:focus,.tp-rotv_b:focus{background-color:var(--cnt-bg-f)}.tp-fldv_b:active,.tp-rotv_b:active{background-color:var(--cnt-bg-a)}.tp-fldv_b:disabled,.tp-rotv_b:disabled{opacity:0.5}.tp-fldv_m,.tp-rotv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:\\'\\';display:block;height:6px;right:calc(var(--cnt-h-p) + (var(--bld-us) + 4px - 6px) / 2 - 2px);margin:auto;opacity:0.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m,.tp-rotv.tp-rotv-expanded .tp-rotv_m{transform:none}.tp-fldv_c,.tp-rotv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c,.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c{display:none}.tp-fldv.tp-fldv-expanded>.tp-fldv_c,.tp-rotv.tp-rotv-expanded .tp-rotv_c{opacity:1;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-coltxtv_m,.tp-lstv{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-coltxtv_mm,.tp-lstv_m{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-coltxtv_mm svg,.tp-lstv_m svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-coltxtv_mm svg path,.tp-lstv_m svg path{fill:currentColor}.tp-coltxtv_w,.tp-pndtxtv{display:flex}.tp-coltxtv_c,.tp-pndtxtv_a{width:100%}.tp-coltxtv_c+.tp-coltxtv_c,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-pndtxtv_a{margin-left:2px}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:0.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--bld-us)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1 * var(--cnt-h-p));right:calc(-1 * var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:\\'\\';height:2px;left:calc(-1 * var(--cnt-h-p));position:absolute;right:calc(-1 * var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us) * 4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,0.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0,0,0,0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--elm-br);border:rgba(255,255,255,0.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,0.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--elm-br);box-shadow:0 0 2px rgba(0,0,0,0.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,0.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--elm-br)}.tp-colswv.tp-v-disabled{opacity:0.5}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,0.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:\\'\\';display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us) * 3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left 0.05s, top 0.05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:0.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-h-p);padding-right:var(--cnt-h-p)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:0.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:0.5}.tp-mllv_i{display:block;height:calc(var(--bld-us) * 3);line-height:var(--bld-us);padding:0 4px;resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:0.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1 * var(--cnt-h-p));right:calc(-1 * var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:0.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:0.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:0.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:\\'\\';display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:\\'\\';display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-br);bottom:0;content:\\'\\';display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv.tp-v-disabled{opacity:0.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:\\'\\';height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:\\'\\';height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:0.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:0.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:0.3}.tp-txtv_k{cursor:pointer;height:100%;left:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:\\'\\';height:calc(var(--bld-us) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:0.1;position:absolute;top:0;transition:border-radius 0.1s, height 0.1s, transform 0.1s, width 0.1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--elm-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) transparent transparent transparent;border-style:solid;border-width:2px;box-sizing:border-box;content:\\'\\';font-size:0.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--font-family);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(2px * 2 + var(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1 * var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1 * var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}');\n this.pool_.getAll().forEach((plugin) => {\n this.embedPluginStyle_(plugin);\n });\n this.registerPlugin({\n plugins: [\n SliderBladePlugin,\n ListBladePlugin,\n TabBladePlugin,\n TextBladePlugin,\n ],\n });\n }\n }\n\n const VERSION = new Semver('3.0.7');\n\n exports.BladeApi = BladeApi;\n exports.ButtonApi = ButtonApi;\n exports.FolderApi = FolderApi;\n exports.InputBindingApi = InputBindingApi;\n exports.ListApi = ListApi;\n exports.MonitorBindingApi = MonitorBindingApi;\n exports.Pane = Pane;\n exports.SeparatorApi = SeparatorApi;\n exports.SliderApi = SliderApi;\n exports.TabApi = TabApi;\n exports.TabPageApi = TabPageApi;\n exports.TextApi = TextApi;\n exports.TpChangeEvent = TpChangeEvent;\n exports.VERSION = VERSION;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","import * as THREE from 'three'\nimport anime from 'animejs'\nimport Base from './base'\nimport { rotateAroundWorldAxis, XYZ_VALUE, AxesEnum, AxesVec3, getFaceColor, colors } from './utils'\nimport { Pane } from 'tweakpane'\n\nconst pane: any = new Pane()\nconst debug = {\n level: 3,\n rotateTime: 300,\n gutter: 5,\n radius: 20,\n gutterColor: '#222',\n cubeSize: 2,\n}\n\nexport default class CreepCube extends Base {\n intersect1: THREE.Intersection | null = null\n intersect2: THREE.Intersection | null = null\n startPlane: THREE.Vector3 | undefined = undefined\n startPoint: THREE.Vector3 | null = null\n movePoint: THREE.Vector3 | null = null\n touchCube: THREE.Mesh | null = null\n isRotating = false\n isShuffling = false\n isSolving = false\n mouse = new THREE.Vector2(0, 0)\n raycaster = new THREE.Raycaster()\n mesh!: THREE.Group\n children: THREE.Mesh[] = []\n coordinate: THREE.Vector3[] = []\n\n constructor (config = {\n level: 3\n }) {\n super()\n this.initDebug()\n this.initCube()\n // this.initLight()\n window.addEventListener('mousedown', this.onMouseDown.bind(this))\n window.addEventListener('touchstart', this.onMouseDown.bind(this))\n window.addEventListener('mousemove', this.onMouseMove.bind(this))\n window.addEventListener('touchmove', this.onMouseMove.bind(this))\n window.addEventListener('mouseup', this.onMouseUp.bind(this))\n window.addEventListener('touchend', this.onMouseUp.bind(this))\n }\n\n computeMaterial (\n rules: boolean[],\n materials: THREE.MeshBasicMaterial[],\n defaultMaterial: THREE.MeshBasicMaterial,\n logoMaterial?: THREE.MeshBasicMaterial,\n ) {\n return rules.map((item, index) => item ? logoMaterial || materials[index] : defaultMaterial)\n }\n\n async initCube () {\n this.mesh && this.scene.remove(this.mesh)\n this.children = []\n this.coordinate = []\n const mesh = this.mesh = new THREE.Group()\n this.scene.add(mesh)\n // 小立方体\n const { level, gutter, radius, cubeSize: size } = debug\n const w = level, h = level, d = level\n const offsetWidth = w * size / 2 - size / 2\n const offsetHeight = h * size / 2 - size / 2\n const offsetDepth = d * size / 2 - size / 2\n const geometry = new THREE.BoxGeometry(size, size, size)\n // 材质\n const defaultMaterial = new THREE.MeshBasicMaterial({ color: debug.gutterColor })\n for (let i = 0; i < d; i++) {\n for (let j = 0; j < w * h; j++) {\n const index = i * w * h + j\nconst materials = colors.map(color => {\n const canvas = getFaceColor(color, radius, gutter, debug.gutterColor, String(index))\n const texture = new THREE.Texture(canvas)\n texture.needsUpdate = true\n texture.minFilter = THREE.NearestFilter\n texture.generateMipmaps = false\n return new THREE.MeshBasicMaterial({ map: texture })\n})\n const currMaterial = this.computeMaterial([\n (j + 1) % w === 0,\n j % w === 0,\n i === d - 1,\n i === 0,\n j + w >= w * h,\n j < w,\n ], materials, defaultMaterial)\n const mesh = new THREE.Mesh(geometry, currMaterial)\n mesh.position.set(\n (j % w) * size - offsetWidth,\n size * i - offsetDepth,\n (j / w >> 0) * size - offsetHeight,\n )\n mesh.name = String(index)\n this.mesh.add(mesh)\n this.children.push(mesh)\n this.coordinate[index] = mesh.position.clone()\n }\n }\n // 外壳\n const outside = new THREE.Mesh(\n new THREE.BoxGeometry(\n size * w + 0.01,\n size * d + 0.01,\n size * h + 0.01\n ),\n new THREE.MeshBasicMaterial({\n color: '#fff',\n opacity: 0,\n transparent: true\n })\n )\n mesh.add(outside)\n // // 自动打乱\n // this.shuffleCube()\n }\n\n // 旋转逻辑\n computeRotation () {\n const sub = this.movePoint?.sub(this.startPoint!)\n if (!sub) return\n let minAngle = Infinity, minIndex = 0, planeNormalIndex: number = NaN\n Object.values(AxesVec3).forEach((vec3, index) => {\n const angle = sub.angleTo(vec3)\n if (vec3.angleTo(this.startPlane!) === 0) {\n planeNormalIndex = index\n }\n if (angle < minAngle) {\n minAngle = angle\n minIndex = index\n }\n })\n const direction = planeNormalIndex % 2 === 0 ? 1 : -1\n const planeNormalKey = planeNormalIndex / 2 >> 0\n const planeNormal = AxesEnum[planeNormalKey]\n // console.log('平面法向量', planeNormal, planeNormalIndex)\n const rotationVector = ['x+', 'x-', 'y+', 'y-', 'z+', 'z-'][minIndex]\n // console.log('旋转向量', rotationVector)\n let rotationAxis\n if (planeNormal === 'x') {\n if (rotationVector === 'y-') rotationAxis = 'z+'\n if (rotationVector === 'y+') rotationAxis = 'z-'\n if (rotationVector === 'z+') rotationAxis = 'y+'\n if (rotationVector === 'z-') rotationAxis = 'y-'\n }\n if (planeNormal === 'y') {\n if (rotationVector === 'x+') rotationAxis = 'z+'\n if (rotationVector === 'x-') rotationAxis = 'z-'\n if (rotationVector === 'z+') rotationAxis = 'x-'\n if (rotationVector === 'z-') rotationAxis = 'x+'\n }\n if (planeNormal === 'z') {\n if (rotationVector === 'y-') rotationAxis = 'x-'\n if (rotationVector === 'y+') rotationAxis = 'x+'\n if (rotationVector === 'x-') rotationAxis = 'y+'\n if (rotationVector === 'x+') rotationAxis = 'y-'\n }\n if (!rotationAxis) return\n this.rotateCube(this.touchCube!, rotationAxis as keyof typeof AxesVec3, direction)\n }\n\n // 根据立方体索引反推层数\n getStoreyByIndex (axis: 'x' | 'y' | 'z', i: number) {\n const lev = debug.level\n const squa = lev ** 2\n const _k = lev - 1\n const rules = {\n x: (i: number) => _k - ((i % squa) % lev),\n y: (i: number) => _k - (i / squa >> 0),\n z: (i: number) => _k - ((i % squa) / lev >> 0)\n }\n return rules[axis](i)\n }\n\n // 根据层数获取立方体\n getCubesByStorey (axis: 'x' | 'y' | 'z', storey = 0, sort = 1) {\n const lev = debug.level\n const squa = lev ** 2\n const rules: {\n [key in typeof axis]: ((n: unknown, i: number) => boolean)[]\n } = {\n x: [],\n y: [],\n z: [],\n }\n for (let k = 0; k < lev; k++) {\n const _k = lev - k - 1\n rules['x'][k] = (n, i) => i % lev === _k\n rules['y'][k] = (n, i) => i / squa >> 0 === _k\n rules['z'][k] = (n, i) => (i % 9) / lev >> 0 === _k\n }\n storey = sort > 0 ? storey : lev - storey - 1\n const rule = rules[axis][storey]\n return this.children.filter(rule)\n }\n\n /**\n * 旋转逻辑\n */\n async rotateCube (touchCube: THREE.Mesh, rotationAxis: keyof typeof AxesVec3, direction: 1 | -1) {\n if (this.isRotating) return\n this.isRotating = true\n const vec3 = AxesVec3[rotationAxis]\n const axis = rotationAxis.slice(0, 1)\n if (!vec3) return this.clearState()\n const allPromise: Promise[] = []\n this.children.forEach(item => {\n if (touchCube.position[axis] === item.position[axis]) {\n allPromise.push(this.moveCube(item, vec3, direction))\n }\n })\n await Promise.all(allPromise)\n this.clearState()\n this.resetCubes()\n }\n\n clearState () {\n this.isRotating = false\n this.startPoint = null\n this.movePoint = null\n }\n\n // 移动小方块\n moveCube (cube: THREE.Mesh, vec3: THREE.Vector3, direction: 1 | -1): Promise {\n return new Promise(resolve => {\n let prev = 0, data = { progress: 0 }\n anime({\n targets: data,\n duration: debug.rotateTime,\n progress: 1,\n easing: 'easeOutQuad',\n update: () => {\n const interval = data.progress - prev\n prev = data.progress\n const matrix = rotateAroundWorldAxis(\n new THREE.Vector3(0, 0, 0),\n new THREE.Vector3(-vec3.x * direction, -vec3.y * direction, -vec3.z * direction),\n interval * Math.PI / 2\n )\n cube.applyMatrix4(matrix)\n },\n complete: () => {\n const p = cube.position\n cube.scale.set(1, 1, 1)\n cube.position.set(Math.round(p.x), Math.round(p.y), Math.round(p.z))\n resolve()\n }\n })\n })\n }\n\n resetCubes () {\n const map = {}\n const toString = (vec3: THREE.Vector3) => `x${vec3.x}y${vec3.y}z${vec3.z}`\n this.children.forEach(cube => map[toString(cube.position)] = cube)\n this.coordinate.forEach((vec3, index) => {\n this.children[index] = map[toString(vec3)]\n })\n }\n\n getMouseSite (e: MouseEvent | TouchEvent) {\n const x = (e['touches'] ? e['touches'][0] : e).clientX\n const y = (e['touches'] ? e['touches'][0] : e).clientY\n this.mouse.x = (x / this.width - 0.5) * 2\n this.mouse.y = -(y / this.height - 0.5) * 2\n }\n\n onMouseDown (e: MouseEvent | TouchEvent) {\n this.getMouseSite(e)\n this.raycaster.setFromCamera(this.mouse, this.camera)\n const intersects = this.raycaster.intersectObjects([this.mesh])\n this.controls.enabled = !intersects.length\n // 兼容移动端\n this.onMouseMove(e)\n // 旋转\n if (this.intersect1 && this.intersect2 && !this.isRotating) {\n // 起始点\n this.startPoint = this.intersect1.point\n // 起始平面\n this.startPlane = this.intersect1.face?.normal\n // 触摸的小方块\n this.touchCube = this.intersect2.object as THREE.Mesh\n }\n }\n\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (!this.mesh) return\n this.getMouseSite(e)\n this.raycaster.setFromCamera(this.mouse, this.camera)\n const intersects = this.raycaster.intersectObjects(this.mesh.children)\n this.intersect1 = intersects[0]\n this.intersect2 = intersects[1]\n if (this.intersect1 && !this.isRotating && this.startPoint) {\n this.movePoint = this.intersect1.point\n if (this.movePoint.distanceTo(this.startPoint) > debug.cubeSize / 5) {\n this.computeRotation()\n }\n }\n }\n\n onMouseUp (e: MouseEvent | TouchEvent) {\n this.startPoint = null\n this.movePoint = null\n this.controls.enabled = true\n }\n\n async shuffleCube () {\n if (this.isShuffling) return\n this.isShuffling = true\n // this.controls.autoRotate = true\n this['inp1'].disabled = true\n this['btn1'].disabled = true\n this['btn2'].disabled = true\n debug.rotateTime = 150\n const count = debug.level * 5 + 10\n const children = this.children.slice()\n for (let i = 0; i < count; i++) {\n const axis = ['x', 'y', 'z'][i % 3]\n await this.rotateCube(\n children[Math.random() * children.length >> 0],\n `${axis}${Math.random() - 0.5 > 0 ? '+' : '-'}` as keyof typeof AxesVec3,\n Math.random() - 0.5 > 0 ? 1 : -1\n )\n }\n this.isShuffling = false\n // this.controls.autoRotate = false\n this['inp1'].disabled = false\n this['btn1'].disabled = false\n this['btn2'].disabled = false\n debug.rotateTime = 300\n }\n\n initDebug () {\n const f1 = pane.addFolder({ title: '参数' })\n this['inp1'] = f1.addInput(debug, 'level', {\n label: '难度',\n options: {\n '二阶': 2,\n '三阶': 3,\n '四阶': 4,\n '五阶': 5,\n '六阶': 6,\n '七阶': 7,\n }\n }).on('change', (ev: any) => {\n const lev = ev.value\n this.initCube()\n this.camera.position.set(lev * 5, lev * 5, lev * 5)\n this.camera.lookAt(0, 0, 0)\n })\n f1.addInput(debug, 'radius', {\n label: '圆角',\n min: 0,\n max: 100,\n }).on('change', () => {\n this.initCube()\n })\n f1.addInput(debug, 'gutter', {\n label: '缝隙',\n min: 0,\n max: 50,\n }).on('change', () => {\n this.initCube()\n })\n f1.addInput(debug, 'gutterColor', {\n label: '缝隙颜色',\n }).on('change', () => {\n this.initCube()\n })\n const f2 = pane.addFolder({ title: '操作' })\n this['btn1'] = f2.addButton({\n title: 'Reset 重置',\n }).on('click', () => {\n this.initCube()\n })\n this['btn2'] = f2.addButton({\n title: 'Shuffle 打乱',\n }).on('click', () => {\n this.shuffleCube()\n })\n this['btn3'] = f2.addButton({\n title: 'Solve 还原',\n disabled: true\n }).on('click', () => {\n this.shuffleCube()\n })\n // f2.addButton({ title: 'R' }).on('click', () => {\n // this.rotateCube(this.children[26], 'x+', 1)\n // })\n // f2.addButton({ title: 'R\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'x+', -1)\n // })\n // f2.addButton({ title: 'L' }).on('click', () => {\n // this.rotateCube(this.children[24], 'x-', 1)\n // })\n // f2.addButton({ title: 'L\\'' }).on('click', () => {\n // this.rotateCube(this.children[24], 'x-', -1)\n // })\n // f2.addButton({ title: 'U' }).on('click', () => {\n // this.rotateCube(this.children[26], 'y+', 1)\n // })\n // f2.addButton({ title: 'U\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'y+', -1)\n // })\n // f2.addButton({ title: 'D' }).on('click', () => {\n // this.rotateCube(this.children[8], 'y-', 1)\n // })\n // f2.addButton({ title: 'D\\'' }).on('click', () => {\n // this.rotateCube(this.children[8], 'y-', -1)\n // })\n // f2.addButton({ title: 'F' }).on('click', () => {\n // this.rotateCube(this.children[26], 'z+', 1)\n // })\n // f2.addButton({ title: 'F\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'z+', -1)\n // })\n // f2.addButton({ title: 'B' }).on('click', () => {\n // this.rotateCube(this.children[20], 'z-', 1)\n // })\n // f2.addButton({ title: 'B\\'' }).on('click', () => {\n // this.rotateCube(this.children[20], 'z-', -1)\n // })\n // f2.addButton({ title: 'x' }).on('click', async () => {\n // if (this.isRotating) return\n // this.isRotating = true\n // const vec3 = AxesVec3['x+']\n // const direction = 1\n // const allPromise: Promise[] = []\n // this.children.forEach(item => {\n // allPromise.push(this.moveCube(item, vec3, direction))\n // })\n // await Promise.all(allPromise)\n // this.isRotating = false\n // this.clearState()\n // this.resetCubes()\n // })\n }\n}\n"],"names":["THREE.WebGLRenderer","THREE.Scene","THREE.PerspectiveCamera","THREE.AmbientLight","THREE.Vector3","THREE.Matrix4","this","Pane","THREE.Vector2","THREE.Raycaster","THREE.Group","THREE.BoxGeometry","THREE.MeshBasicMaterial","THREE.Texture","THREE.NearestFilter","THREE.Mesh"],"mappings":"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CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;IACrE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrE;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;IACA,EAAE,EAAE,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C;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AACnI;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;IACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH;IACA,EAAE,QAAQ,EAAE,UAAU;IACtB,EAAE,SAAS,EAAE,KAAK;IAClB,EAAE,UAAU,EAAE,KAAK;AACnB;IACA,EAAE,EAAE,CAAC;AACL;IACA,CAAC,OAAO,cAAc,CAAC;AACvB;IACA,CAAC;AACD;IACA,SAAS,sBAAsB,GAAG;AAClC;IACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;IACA,CAAC;AACD;IACA,SAAS,aAAa,GAAG;AACzB;IACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;IACA,CAAC;AACD;IACA,SAAS,eAAe,EAAE,QAAQ,GAAG;AACrC;IACA,CAAC,IAAI,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAChC;IACA,CAAC,IAAI,cAAc,GAAG,IAAI,CAAC;AAC3B;IA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"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/three/build/three.module.js","../node_modules/animejs/lib/anime.es.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/base.ts","../src/utils.ts","../node_modules/tweakpane/dist/tweakpane.js","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright 2010-2021 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '135';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toUpperCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidian modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t// Park-Miller algorithm\n\n\t_seed = _seed * 16807 % 2147483647;\n\n\treturn ( _seed - 1 ) / 2147483646;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\n/**\n * cyrb53 hash for string from: https://stackoverflow.com/a/52171480\n *\n * Public Domain, @bryc - https://stackoverflow.com/users/815680/bryc\n *\n * It is roughly similar to the well-known MurmurHash/xxHash algorithms. It uses a combination\n * of multiplication and Xorshift to generate the hash, but not as thorough. As a result it's\n * faster than either would be in JavaScript and significantly simpler to implement. Keep in\n * mind this is not a secure algorithm, if privacy/security is a concern, this is not for you.\n *\n * @param {string} str\n * @param {number} seed, default 0\n * @returns number\n */\nfunction hashString( str, seed = 0 ) {\n\n\tlet h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n\n\tfor ( let i = 0, ch; i < str.length; i ++ ) {\n\n\t\tch = str.charCodeAt( i );\n\n\t\th1 = Math.imul( h1 ^ ch, 2654435761 );\n\n\t\th2 = Math.imul( h2 ^ ch, 1597334677 );\n\n\t}\n\n\th1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 ) ^ Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 );\n\n\th2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 ) ^ Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 );\n\n\treturn 4294967296 * ( 2097151 & h2 ) + ( h1 >>> 0 );\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.image = image;\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.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\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t// check cube texture with data textures\n\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = serializeImage( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nVector4.prototype.isVector4 = true;\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tsetTexture( texture ) {\n\n\t\ttexture.image = {\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\tdepth: this.depth\n\t\t};\n\n\t\tthis.texture = texture;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.image = { ...this.texture.image }; // See #20328.\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count ) {\n\n\t\tsuper( width, height );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.samples = 4;\n\n\t\tthis.ignoreDepthForMultisampleCopy = options.ignoreDepth !== undefined ? options.ignoreDepth : true;\n\t\tthis.useRenderToTexture = ( options.useRenderToTexture !== undefined ) ? options.useRenderToTexture : false;\n\t\tthis.useRenderbuffer = this.useRenderToTexture === false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\t\tthis.useRenderToTexture = source.useRenderToTexture;\n\t\tthis.useRenderbuffer = source.useRenderbuffer;\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\tthis.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box$3 );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from 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$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\ttoVector3( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast() {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.format = RGBAFormat;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.format !== RGBAFormat ) data.format = this.format;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && 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.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.format = source.format;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopyGammaToLinear( color, gammaFactor = 2.0 ) {\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToGamma( color, gammaFactor = 2.0 ) {\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t}\n\n\tconvertGammaToLinear( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n * }\n */\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = attributes.tangent.array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: \n * }\n */\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options, dummy ) {\n\n\t\tif ( Number.isInteger( options ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\t\toptions = dummy;\n\n\t\t}\n\n\t\tsuper( size, size, options );\n\n\t\toptions = options || {};\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.texture._needsFlipEnvMap = false;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = 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 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 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 precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\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\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn 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\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tlightMapIrradiance *= PI;\\n\\t#endif\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_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.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\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\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\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 vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec;\\n\\t\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\t\\treflectVec = reflect( - viewDir, normal );\\n\\t\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\\t\\t\\t#endif\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= specularColorMapTexelToLinear( texture2D( specularColorMap, vUv ) ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= sheenColorMapTexelToLinear( texture2D( sheenColorMap, vUv ) ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.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}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if 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\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = 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 += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 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\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform vec2 morphTargetsTextureSize;\\n\\t\\tvec3 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset, const in int stride ) {\\n\\t\\t\\tfloat texelIndex = float( vertexIndex * stride + offset );\\n\\t\\t\\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\\t\\t\\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\\t\\t\\treturn texture( morphTargetsTexture, morphUV ).xyz;\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 1 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#else\\n\\t\\t\\t\\tif ( morphTargetInfluences[ i ] > 0.0 ) transformed += getMorph( gl_VertexID, i, 0, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = 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 * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = 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\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( float roughness, float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\\n\\t\\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\\n\\t\\tvec3 attenuationColor, float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += 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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 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\nconst fragment$9 = \"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 \\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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\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\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#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 \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"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\nconst fragment$3 = \"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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#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}\";\n\nconst fragment$2 = \"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\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_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\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\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\toutput_fragment: output_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\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_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_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\t\talphaTest: { value: 0 }\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 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // standard, physical\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_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: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 0 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 0 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\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 if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( 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() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t// private interface\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_setEncoding( uniform, texture ) {\n\n\t\t/* if ( this._renderer.capabilities.isWebGL2 === true && texture.format === RGBAFormat && texture.type === UnsignedByteType && texture.encoding === sRGBEncoding ) {\n\n\t\t\tuniform.value = ENCODINGS[ LinearEncoding ];\n\n\t\t} else {\n\n\t\t\tuniform.value = ENCODINGS[ texture.encoding ];\n\n\t\t} */\n\n\t\tuniform.value = ENCODINGS[ texture.encoding ];\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! 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\tthis._setEncoding( uniforms[ 'inputEncoding' ], texture );\n\t\tthis._setEncoding( uniforms[ 'outputEncoding' ], cubeUVRenderTarget.texture );\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\n\t\tthis._setEncoding( blurUniforms[ 'inputEncoding' ], targetIn.texture );\n\t\tthis._setEncoding( blurUniforms[ 'outputEncoding' ], targetIn.texture );\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nclass DataTexture2DArray extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector3();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst numberOfMorphTargets = geometry.morphAttributes.position.length;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== numberOfMorphTargets ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\n\t\t\t\tconst numberOfVertices = geometry.attributes.position.count;\n\t\t\t\tconst numberOfVertexData = ( hasMorphNormals === true ) ? 2 : 1; // (v,n) vs. (v)\n\n\t\t\t\tlet width = numberOfVertices * numberOfVertexData;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * numberOfMorphTargets );\n\n\t\t\t\tconst texture = new DataTexture2DArray( buffer, width, height, numberOfMorphTargets );\n\t\t\t\ttexture.format = RGBAFormat; // using RGBA since RGB might be emulated (and is thus slower)\n\t\t\t\ttexture.type = FloatType;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = numberOfVertexData * 4;\n\n\t\t\t\tfor ( let i = 0; i < numberOfMorphTargets; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\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\tentry = {\n\t\t\t\t\tcount: numberOfMorphTargets,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DataTexture3D extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\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\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _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 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\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\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// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || emptyTexture3d, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyTexture2dArray, units[ i ] );\n\n\t}\n\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 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _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 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\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\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 setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + addLineNumbers( gl.getShaderSource( shader ) );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\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.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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\t( parameters.morphTargets && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargets && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\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\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\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\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\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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\t\t\tparameters.format === RGBFormat ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.specularColorMap ? getTexelDecodingFunction( 'specularColorMapTexelToLinear', parameters.specularColorMapEncoding ) : '',\n\t\t\tparameters.sheenColorMap ? getTexelDecodingFunction( 'sheenColorMapTexelToLinear', parameters.sheenColorMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t'precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor',\n\t\t'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV',\n\t\t'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap',\n\t\t'objectSpaceNormalMap', 'tangentSpaceNormalMap',\n\t\t'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap',\n\t\t'displacementMap', 'specularMap', , 'roughnessMap', 'metalnessMap', 'gradientMap',\n\t\t'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',\n\t\t'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',\n\t\t'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'morphTargetsCount', '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'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format',\n\t\t'specularIntensityMap', 'specularColorMap', 'specularColorMapEncoding',\n\t\t'transmission', 'transmissionMap', 'thicknessMap',\n\t\t'sheen', 'sheenColorMap', 'sheenColorMapEncoding', 'sheenRoughnessMap'\n\t];\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( map && map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map && map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t} else {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t}\n\n\t\t/* if ( isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding ) {\n\n\t\t\tencoding = LinearEncoding; // disable inline decode for sRGB textures in WebGL 2\n\n\t\t} */\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\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\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\t\t\tspecularColorMapEncoding: getTextureEncodingFromMap( material.specularColorMap ),\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenColorMapEncoding: getTextureEncodingFromMap( material.sheenColorMap ),\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! object.geometry && !! object.geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! object.geometry && !! object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! 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: object.isSkinnedMesh === true && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: !! object.geometry && !! object.geometry.morphAttributes.position,\n\t\t\tmorphNormals: !! object.geometry && !! object.geometry.morphAttributes.normal,\n\t\t\tmorphTargetsCount: ( !! object.geometry && !! object.geometry.morphAttributes.position ) ? object.geometry.morphAttributes.position.length : 0,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tformat: material.format,\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\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( hashString( parameters.fragmentShader ) );\n\t\t\tarray.push( hashString( parameters.vertexShader ) );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\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\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\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: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\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 === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.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 texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.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\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\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\ttexStorage2D: texStorage2D,\n\t\ttexSubImage2D: texSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst hasMultisampledRenderToTexture = extensions.has( 'WEBGL_multisampled_render_to_texture' );\n\tconst MultisampledRenderToTextureExtension = hasMultisampledRenderToTexture ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : undefined;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && 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 ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType/*, encoding*/ ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\t//if ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding ) ? 35907 : 32856;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\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\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true ) {\n\n\t\t\t// generated mipmaps via gl.generateMipmap()\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( 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\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\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\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} 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\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\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\tconst levels = getMipLevels( texture, image, supportsMips );\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\tconst cubeImage = [];\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t} else {\n\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst image = cubeImage[ 0 ],\n\t\t\tsupportsMips = isPowerOfTwo$1( 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, texture.encoding );\n\n\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\tlet mipmaps;\n\n\t\tif ( isCompressed ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t// We assume images for cube map have the same size.\n\t\t\tgenerateMipmap( 34067 );\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, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || renderTarget.useRenderToTexture ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\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\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && renderTarget.useRenderbuffer ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 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\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && renderTarget.useRenderbuffer ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\tMultisampledRenderToTextureExtension.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.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\tstate.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\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray;\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && texture.format === RGBFormat && ( texture.type === FloatType || texture.type === HalfFloatType ) ) {\n\n\t\t\ttexture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\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\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( renderTarget.useRenderbuffer ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\tstate.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\tstate.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, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( isRenderTarget3D ) {\n\n\t\t\t\t// Render targets containing layers, i.e: Texture 3D and 2d arrays\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tconst isTexture3D = texture.isDataTexture3D;\n\t\t\t\t\tglTextureType = isTexture3D ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.useRenderbuffer ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\t\t\t\tconst invalidationArray = [ 36064 ];\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! renderTarget.ignoreDepthForMultisampleCopy ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t}\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tif ( renderTarget.ignoreDepthForMultisampleCopy ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\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.useRenderbuffer || renderTarget.useRenderToTexture ) ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\n\t\tsetTextureCube( texture, slot );\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\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\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\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\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( 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\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\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\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tconst hasMultisampledRenderToTexture = renderer.extensions.has( 'WEBGL_multisampled_render_to_texture' );\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet isMultisample = false;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn referenceSpace;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tisMultisample = attributes.antialias;\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33189;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( attributes.alpha || isMultisample ) ? 32856 : 32849,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tif ( isMultisample ) {\n\n\t\t\t\t\t\tnewRenderTarget = new WebGLMultisampleRenderTarget(\n\t\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\t\tignoreDepth: glProjLayer.ignoreDepthValues,\n\t\t\t\t\t\t\t\tuseRenderToTexture: hasMultisampledRenderToTexture,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tformat: attributes.alpha ? RGBAFormat : RGBFormat,\n\t\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\t\tignoreDepth: glProjLayer.ignoreDepthValues,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 0 );\n\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign inputSources to available controllers\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst controller = controllers[ i ];\n\t\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\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, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t//\n\n\tconst _currentDrawBuffers = [];\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t_currentDrawBuffers[ 0 ] = 1029;\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\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.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\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\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\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\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\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\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\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\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\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\tconst needsAntialias = _antialias === true && capabilities.isWebGL2 === true;\n\t\t\tconst renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;\n\n\t\t\t_transmissionRenderTarget = new renderTargetType( 1024, 1024, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\twrapS: ClampToEdgeWrapping,\n\t\t\t\twrapT: ClampToEdgeWrapping,\n\t\t\t\tuseRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )\n\t\t\t} );\n\n\t\t}\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\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\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\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 and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\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 ( !! geometry && ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\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\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.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( renderTarget.useRenderToTexture ) {\n\n\t\t\t\t\tconsole.warn( 'render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTarget.useRenderToTexture = false;\n\t\t\t\t\trenderTarget.useRenderbuffer = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isDataTexture3D || texture.isDataTexture2DArray ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.useRenderbuffer ) {\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\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t_currentDrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_currentDrawBuffers.length = textures.length;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\t\t_currentDrawBuffers[ 0 ] = 36064;\n\t\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\t\t_currentDrawBuffers[ 0 ] = 1029;\n\t\t\t\t\t_currentDrawBuffers.length = 1;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t_gl.drawBuffers( _currentDrawBuffers );\n\n\t\t\t\t} else {\n\n\t\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\tlet glFormat = utils.convert( texture.format );\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100\n\t\t\t// Not needed in Chrome 93+\n\n\t\t\tif ( glFormat === 6407 ) glFormat = 32849;\n\t\t\tif ( glFormat === 6408 ) glFormat = 32856;\n\n\t\t}\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isDataTexture3D ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataTexture2DArray ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isDataTexture3D ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nWebGLRenderer.prototype.isWebGLRenderer = true;\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.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( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.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.applyNormalMatrix( 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\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.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.transformDirection( 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( 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( 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( 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( 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( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( 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( 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( 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( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSprite.prototype.isSprite = true;\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ 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.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.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.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.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * }\n */\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\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\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nPoints.prototype.isPoints = true;\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.format = format !== undefined ? format : RGBFormat;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nVideoTexture.prototype.isVideoTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\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// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* 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( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\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( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: '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( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nSplineCurve.prototype.isSplineCurve = true;\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( 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( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( 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( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( 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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\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\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1, hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * ior: ,\n * reflectivity: ,\n *\n * sheen: ,\n * sheenColor: ,\n * sheenColorMap: new THREE.Texture( ),\n * sheenRoughness: ,\n * sheenRoughnessMap: new THREE.Texture( ),\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( ),\n *\n * thickness: ,\n * thicknessMap: new THREE.Texture( ),\n * attenuationDistance: ,\n * attenuationColor: ,\n *\n * specularIntensity: ,\n * specularIntensityMap: new THREE.Texture( ),\n * specularColor: ,\n * specularColorMap: new THREE.Texture( )\n * }\n */\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * flatShading: \n * }\n */\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * flatShading: \n * }\n */\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* 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_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\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\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\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() {\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( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.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\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.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// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.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 ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\treturn new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\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\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( stream => {\n\n\t\t\t\tconst response = new Response( stream );\n\n\t\t\t\tswitch ( this.responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, this.mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\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( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\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\tremoveEventListeners();\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\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\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\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\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\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\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\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( 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\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\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( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.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\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nRectAreaLight.prototype.isRectAreaLight = true;\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( 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( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLightProbe.prototype.isLightProbe = true;\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\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.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\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.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.format !== undefined ) material.format = json.format;\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.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( 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\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase '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: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\t\t\t\tconst image = images[ data.image ];\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( image );\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture( image.data, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\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\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.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\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.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$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( 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\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_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() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\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\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\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\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// 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( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( 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( coords, camera ) {\n\n\t\tif ( camera && camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera && camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\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( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( 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( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( 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( 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( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nclass DataUtils {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( val > 65504 ) {\n\n\t\t\tconsole.warn( 'THREE.DataUtils.toHalfFloat(): value exceeds 65504.' );\n\n\t\t\tval = 65504; // maximum representable value in float16\n\n\t\t}\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\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\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\n\n};\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\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\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\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\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\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\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nMesh.prototype.setDrawMode = function () {\n\n\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};\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\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\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\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\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\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\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\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\n\n};\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\n//\n\nfunction ParametricGeometry() {\n\n\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction TextGeometry() {\n\n\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from 'three';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\t\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update() {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerCancel );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\t\tlet zoomChanged = false;\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly() {\n\n\t\t\tconst dx = pointers[ 0 ].pageX - pointers[ 1 ].pageX;\n\t\t\tconst dy = pointers[ 0 ].pageY - pointers[ 1 ].pageY;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan();\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate();\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t removePointer( event );\n\n\t\t if ( pointers.length === 0 ) {\n\n\t\t scope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t scope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t scope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t }\n\n\t\t scope.dispatchEvent( _endEvent );\n\n\t\t state = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onPointerCancel( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\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\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\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\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ].pointerId == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointer = ( event.pointerId === pointers[ 0 ].pointerId ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointer.pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerCancel );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nclass MapControls extends OrbitControls {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper( object, domElement );\n\n\t\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\t\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\t\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\t\tthis.touches.ONE = TOUCH.PAN;\n\t\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n\t}\n\n}\n\nexport { OrbitControls, MapControls };\n","import * as THREE from 'three'\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\n\nexport default class Base {\n width: number\n height: number\n renderer!: THREE.WebGLRenderer\n scene!: THREE.Scene\n camera!: THREE.PerspectiveCamera\n controls!: OrbitControls\n\n constructor () {\n this.width = window.innerWidth\n this.height = window.innerHeight\n this.initRenderer()\n this.initScene()\n this.initCamera()\n this.initControls()\n this.render()\n }\n // 创建渲染器\n initRenderer () {\n const renderer = this.renderer = new THREE.WebGLRenderer({\n antialias: true,\n alpha: true\n })\n renderer.setSize(this.width, this.height)\n renderer.setPixelRatio(window.devicePixelRatio)\n document.body.appendChild(renderer.domElement)\n }\n // 创建场景\n initScene () {\n const scene = this.scene = new THREE.Scene()\n }\n // 创建相机\n initCamera () {\n const camera = this.camera = new THREE.PerspectiveCamera(45, this.width / this.height, 0.1, 100)\n camera.position.set(15, 15, 15)\n camera.lookAt(0, 0, 0)\n }\n // 创建光源\n initLight (color = 0xffffff) {\n const ambientLight = new THREE.AmbientLight(color)\n this.scene.add(ambientLight)\n }\n // 轨道控制器\n initControls () {\n const { renderer, camera } = this\n const controls = this.controls = new OrbitControls(camera, renderer.domElement)\n controls.target = new THREE.Vector3(0, 0, 0)\n controls.enableZoom = false\n controls.rotateSpeed = 1\n controls.update()\n }\n // 渲染\n render () {\n const { renderer, scene, camera } = this\n this.controls.update()\n renderer.clear()\n renderer.render(scene, camera)\n window.requestAnimationFrame(() => {\n this.render()\n })\n }\n}\n","import * as THREE from 'three'\nimport { LOGO } from './config'\n\nexport const rotateAroundWorldAxis = (origin: THREE.Vector3, vector: THREE.Vector3, radius: number) => {\n vector.normalize()\n const u = vector.x\n const v = vector.y\n const w = vector.z\n const a = origin.x\n const b = origin.y\n const c = origin.z\n const matrix4 = new THREE.Matrix4()\n matrix4.set(\n u * u + (v * v + w * w) * Math.cos(radius), u * v * (1 - Math.cos(radius)) - w * Math.sin(radius), u * w * (1 - Math.cos(radius)) + v * Math.sin(radius), (a * (v * v + w * w) - u * (b * v + c * w)) * (1 - Math.cos(radius)) + (b * w - c * v) * Math.sin(radius),\n u * v * (1 - Math.cos(radius)) + w * Math.sin(radius), v * v + (u * u + w * w) * Math.cos(radius), v * w * (1 - Math.cos(radius)) - u * Math.sin(radius), (b * (u * u + w * w) - v * (a * u + c * w)) * (1 - Math.cos(radius)) + (c * u - a * w) * Math.sin(radius),\n u * w * (1 - Math.cos(radius)) - v * Math.sin(radius), v * w * (1 - Math.cos(radius)) + u * Math.sin(radius), w * w + (u * u + v * v) * Math.cos(radius), (c * (u * u + v * v) - w * (a * u + b * v)) * (1 - Math.cos(radius)) + (a * v - b * u) * Math.sin(radius),\n 0, 0, 0, 1\n ) \n return matrix4\n}\n\nexport enum AxesEnum { x, y, z }\n\nexport const XYZ_VALUE = 0 ^ 1 ^ 2\n\nexport const AxesVec3 = {\n 'x+': new THREE.Vector3(1, 0, 0),\n 'x-': new THREE.Vector3(-1, 0, 0),\n 'y+': new THREE.Vector3(0, 1, 0),\n 'y-': new THREE.Vector3(0, -1, 0),\n 'z+': new THREE.Vector3(0, 0, 1),\n 'z-': new THREE.Vector3(0, 0, -1)\n}\n\nconst roundRectByArc = (ctx: CanvasRenderingContext2D, ...[x, y, w, h, r]: number[]) => {\n const min = Math.min(w, h), PI = Math.PI\n if (r > min / 2) r = min / 2\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.lineTo(x + r, y)\n ctx.lineTo(x + w - r, y)\n ctx.arc(x + w - r, y + r, r, -PI / 2, 0)\n ctx.lineTo(x + w, y + h - r)\n ctx.arc(x + w - r, y + h - r, r, 0, PI / 2)\n ctx.lineTo(x + r, y + h)\n ctx.arc(x + r, y + h - r, r, PI / 2, PI)\n ctx.lineTo(x, y + r)\n ctx.arc(x + r, y + r, r, PI, -PI / 2)\n ctx.closePath()\n}\n\nexport const colors = [\n '#3b81f5', // 蓝色\n '#029c56', // 绿色\n '#d94335', // 红色\n '#e66f00', // 橘色\n '#f3b30a', // 黄色\n '#f4f4f4', // 白色\n]\n\nexport const getFaceColor = (\n color: string,\n radius = 10,\n gutter = 5,\n gutterColor = '#000',\n text = ''\n): HTMLCanvasElement => {\n const size = 256\n const canvas = document.createElement('canvas')\n canvas.width = canvas.height = size\n const ctx = canvas.getContext('2d')!\n ctx.fillStyle = gutterColor\n ctx.fillRect(0, 0, size, size)\n ctx.fillStyle = color\n roundRectByArc(ctx, gutter, gutter, size - gutter * 2, size - gutter * 2, radius)\n ctx.fill()\n if (text) {\n ctx.fillStyle = gutterColor\n const h = size / 2\n ctx.font = `${h}px Microsoft YaHei`\n ctx.textBaseline = 'top'\n const w = ctx.measureText(text).width\n ctx.fillText(text, size / 2 - w / 2, size / 2 - h / 2)\n }\n return canvas\n // else return new Promise((resolve, reject) => {\n // const img = new Image()\n // img.onload = () => {\n // ctx.drawImage(img, 0, 0, size, size)\n // resolve(canvas)\n // }\n // img.src = LOGO\n // })\n}\n","/*! Tweakpane 3.0.7 (c) 2016 cocopon, licensed under the MIT license. */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Tweakpane = {}));\n})(this, (function (exports) { 'use strict';\n\n /***\n * A simple semantic versioning perser.\n */\n class Semver {\n /**\n * @hidden\n */\n constructor(text) {\n const [core, prerelease] = text.split('-');\n const coreComps = core.split('.');\n this.major = parseInt(coreComps[0], 10);\n this.minor = parseInt(coreComps[1], 10);\n this.patch = parseInt(coreComps[2], 10);\n this.prerelease = prerelease !== null && prerelease !== void 0 ? prerelease : null;\n }\n toString() {\n const core = [this.major, this.minor, this.patch].join('.');\n return this.prerelease !== null ? [core, this.prerelease].join('-') : core;\n }\n }\n\n class BladeApi {\n constructor(controller) {\n this.controller_ = controller;\n }\n get disabled() {\n return this.controller_.viewProps.get('disabled');\n }\n set disabled(disabled) {\n this.controller_.viewProps.set('disabled', disabled);\n }\n get hidden() {\n return this.controller_.viewProps.get('hidden');\n }\n set hidden(hidden) {\n this.controller_.viewProps.set('hidden', hidden);\n }\n dispose() {\n this.controller_.viewProps.set('disposed', true);\n }\n }\n\n class TpEvent {\n constructor(target) {\n this.target = target;\n }\n }\n class TpChangeEvent extends TpEvent {\n constructor(target, value, presetKey, last) {\n super(target);\n this.value = value;\n this.presetKey = presetKey;\n this.last = last !== null && last !== void 0 ? last : true;\n }\n }\n class TpUpdateEvent extends TpEvent {\n constructor(target, value, presetKey) {\n super(target);\n this.value = value;\n this.presetKey = presetKey;\n }\n }\n class TpFoldEvent extends TpEvent {\n constructor(target, expanded) {\n super(target);\n this.expanded = expanded;\n }\n }\n\n function forceCast(v) {\n return v;\n }\n function isEmpty(value) {\n return value === null || value === undefined;\n }\n function deepEqualsArray(a1, a2) {\n if (a1.length !== a2.length) {\n return false;\n }\n for (let i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) {\n return false;\n }\n }\n return true;\n }\n\n const CREATE_MESSAGE_MAP = {\n alreadydisposed: () => 'View has been already disposed',\n invalidparams: (context) => `Invalid parameters for '${context.name}'`,\n nomatchingcontroller: (context) => `No matching controller for '${context.key}'`,\n nomatchingview: (context) => `No matching view for '${JSON.stringify(context.params)}'`,\n notbindable: () => `Value is not bindable`,\n propertynotfound: (context) => `Property '${context.name}' not found`,\n shouldneverhappen: () => 'This error should never happen',\n };\n class TpError {\n constructor(config) {\n var _a;\n this.message =\n (_a = CREATE_MESSAGE_MAP[config.type](forceCast(config.context))) !== null && _a !== void 0 ? _a : 'Unexpected error';\n this.name = this.constructor.name;\n this.stack = new Error(this.message).stack;\n this.type = config.type;\n }\n static alreadyDisposed() {\n return new TpError({ type: 'alreadydisposed' });\n }\n static notBindable() {\n return new TpError({\n type: 'notbindable',\n });\n }\n static propertyNotFound(name) {\n return new TpError({\n type: 'propertynotfound',\n context: {\n name: name,\n },\n });\n }\n static shouldNeverHappen() {\n return new TpError({ type: 'shouldneverhappen' });\n }\n }\n\n class BindingTarget {\n constructor(obj, key, opt_id) {\n this.obj_ = obj;\n this.key_ = key;\n this.presetKey_ = opt_id !== null && opt_id !== void 0 ? opt_id : key;\n }\n static isBindable(obj) {\n if (obj === null) {\n return false;\n }\n if (typeof obj !== 'object') {\n return false;\n }\n return true;\n }\n get key() {\n return this.key_;\n }\n get presetKey() {\n return this.presetKey_;\n }\n read() {\n return this.obj_[this.key_];\n }\n write(value) {\n this.obj_[this.key_] = value;\n }\n writeProperty(name, value) {\n const valueObj = this.read();\n if (!BindingTarget.isBindable(valueObj)) {\n throw TpError.notBindable();\n }\n if (!(name in valueObj)) {\n throw TpError.propertyNotFound(name);\n }\n valueObj[name] = value;\n }\n }\n\n class ButtonApi extends BladeApi {\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get title() {\n var _a;\n return (_a = this.controller_.valueController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.valueController.props.set('title', title);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n const emitter = this.controller_.valueController.emitter;\n emitter.on(eventName, () => {\n bh(new TpEvent(this));\n });\n return this;\n }\n }\n\n class Emitter {\n constructor() {\n this.observers_ = {};\n }\n on(eventName, handler) {\n let observers = this.observers_[eventName];\n if (!observers) {\n observers = this.observers_[eventName] = [];\n }\n observers.push({\n handler: handler,\n });\n return this;\n }\n off(eventName, handler) {\n const observers = this.observers_[eventName];\n if (observers) {\n this.observers_[eventName] = observers.filter((observer) => {\n return observer.handler !== handler;\n });\n }\n return this;\n }\n emit(eventName, event) {\n const observers = this.observers_[eventName];\n if (!observers) {\n return;\n }\n observers.forEach((observer) => {\n observer.handler(event);\n });\n }\n }\n\n const PREFIX = 'tp';\n function ClassName(viewName) {\n const fn = (opt_elementName, opt_modifier) => {\n return [\n PREFIX,\n '-',\n viewName,\n 'v',\n opt_elementName ? `_${opt_elementName}` : '',\n opt_modifier ? `-${opt_modifier}` : '',\n ].join('');\n };\n return fn;\n }\n\n function compose(h1, h2) {\n return (input) => h2(h1(input));\n }\n function extractValue(ev) {\n return ev.rawValue;\n }\n function bindValue(value, applyValue) {\n value.emitter.on('change', compose(extractValue, applyValue));\n applyValue(value.rawValue);\n }\n function bindValueMap(valueMap, key, applyValue) {\n bindValue(valueMap.value(key), applyValue);\n }\n\n function applyClass(elem, className, active) {\n if (active) {\n elem.classList.add(className);\n }\n else {\n elem.classList.remove(className);\n }\n }\n function valueToClassName(elem, className) {\n return (value) => {\n applyClass(elem, className, value);\n };\n }\n function bindValueToTextContent(value, elem) {\n bindValue(value, (text) => {\n elem.textContent = text !== null && text !== void 0 ? text : '';\n });\n }\n\n const className$q = ClassName('btn');\n class ButtonView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$q());\n config.viewProps.bindClassModifiers(this.element);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$q('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(className$q('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n }\n }\n\n class ButtonController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new ButtonView(doc, {\n props: this.props,\n viewProps: this.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n }\n\n class BoundValue {\n constructor(initialValue, config) {\n var _a;\n this.constraint_ = config === null || config === void 0 ? void 0 : config.constraint;\n this.equals_ = (_a = config === null || config === void 0 ? void 0 : config.equals) !== null && _a !== void 0 ? _a : ((v1, v2) => v1 === v2);\n this.emitter = new Emitter();\n this.rawValue_ = initialValue;\n }\n get constraint() {\n return this.constraint_;\n }\n get rawValue() {\n return this.rawValue_;\n }\n set rawValue(rawValue) {\n this.setRawValue(rawValue, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(rawValue, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n const constrainedValue = this.constraint_\n ? this.constraint_.constrain(rawValue)\n : rawValue;\n const changed = !this.equals_(this.rawValue_, constrainedValue);\n if (!changed && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.rawValue_ = constrainedValue;\n this.emitter.emit('change', {\n options: opts,\n rawValue: constrainedValue,\n sender: this,\n });\n }\n }\n\n class PrimitiveValue {\n constructor(initialValue) {\n this.emitter = new Emitter();\n this.value_ = initialValue;\n }\n get rawValue() {\n return this.value_;\n }\n set rawValue(value) {\n this.setRawValue(value, {\n forceEmit: false,\n last: true,\n });\n }\n setRawValue(value, options) {\n const opts = options !== null && options !== void 0 ? options : {\n forceEmit: false,\n last: true,\n };\n if (this.value_ === value && !opts.forceEmit) {\n return;\n }\n this.emitter.emit('beforechange', {\n sender: this,\n });\n this.value_ = value;\n this.emitter.emit('change', {\n options: opts,\n rawValue: this.value_,\n sender: this,\n });\n }\n }\n\n function createValue(initialValue, config) {\n const constraint = config === null || config === void 0 ? void 0 : config.constraint;\n const equals = config === null || config === void 0 ? void 0 : config.equals;\n if (!constraint && !equals) {\n return new PrimitiveValue(initialValue);\n }\n return new BoundValue(initialValue, config);\n }\n\n class ValueMap {\n constructor(valueMap) {\n this.emitter = new Emitter();\n this.valMap_ = valueMap;\n for (const key in this.valMap_) {\n const v = this.valMap_[key];\n v.emitter.on('change', () => {\n this.emitter.emit('change', {\n key: key,\n sender: this,\n });\n });\n }\n }\n static createCore(initialValue) {\n const keys = Object.keys(initialValue);\n return keys.reduce((o, key) => {\n return Object.assign(o, {\n [key]: createValue(initialValue[key]),\n });\n }, {});\n }\n static fromObject(initialValue) {\n const core = this.createCore(initialValue);\n return new ValueMap(core);\n }\n get(key) {\n return this.valMap_[key].rawValue;\n }\n set(key, value) {\n this.valMap_[key].rawValue = value;\n }\n value(key) {\n return this.valMap_[key];\n }\n }\n\n function parseObject(value, keyToParserMap) {\n const keys = Object.keys(keyToParserMap);\n const result = keys.reduce((tmp, key) => {\n if (tmp === undefined) {\n return undefined;\n }\n const parser = keyToParserMap[key];\n const result = parser(value[key]);\n return result.succeeded\n ? Object.assign(Object.assign({}, tmp), { [key]: result.value }) : undefined;\n }, {});\n return forceCast(result);\n }\n function parseArray(value, parseItem) {\n return value.reduce((tmp, item) => {\n if (tmp === undefined) {\n return undefined;\n }\n const result = parseItem(item);\n if (!result.succeeded || result.value === undefined) {\n return undefined;\n }\n return [...tmp, result.value];\n }, []);\n }\n function isObject(value) {\n if (value === null) {\n return false;\n }\n return typeof value === 'object';\n }\n function createParamsParserBuilder(parse) {\n return (optional) => (v) => {\n if (!optional && v === undefined) {\n return {\n succeeded: false,\n value: undefined,\n };\n }\n if (optional && v === undefined) {\n return {\n succeeded: true,\n value: undefined,\n };\n }\n const result = parse(v);\n return result !== undefined\n ? {\n succeeded: true,\n value: result,\n }\n : {\n succeeded: false,\n value: undefined,\n };\n };\n }\n function createParamsParserBuilders(optional) {\n return {\n custom: (parse) => createParamsParserBuilder(parse)(optional),\n boolean: createParamsParserBuilder((v) => typeof v === 'boolean' ? v : undefined)(optional),\n number: createParamsParserBuilder((v) => typeof v === 'number' ? v : undefined)(optional),\n string: createParamsParserBuilder((v) => typeof v === 'string' ? v : undefined)(optional),\n function: createParamsParserBuilder((v) =>\n typeof v === 'function' ? v : undefined)(optional),\n constant: (value) => createParamsParserBuilder((v) => (v === value ? value : undefined))(optional),\n raw: createParamsParserBuilder((v) => v)(optional),\n object: (keyToParserMap) => createParamsParserBuilder((v) => {\n if (!isObject(v)) {\n return undefined;\n }\n return parseObject(v, keyToParserMap);\n })(optional),\n array: (itemParser) => createParamsParserBuilder((v) => {\n if (!Array.isArray(v)) {\n return undefined;\n }\n return parseArray(v, itemParser);\n })(optional),\n };\n }\n const ParamsParsers = {\n optional: createParamsParserBuilders(true),\n required: createParamsParserBuilders(false),\n };\n function parseParams(value, keyToParserMap) {\n const result = ParamsParsers.required.object(keyToParserMap)(value);\n return result.succeeded ? result.value : undefined;\n }\n\n function disposeElement(elem) {\n if (elem && elem.parentElement) {\n elem.parentElement.removeChild(elem);\n }\n return null;\n }\n\n function getAllBladePositions() {\n return ['veryfirst', 'first', 'last', 'verylast'];\n }\n\n const className$p = ClassName('');\n const POS_TO_CLASS_NAME_MAP = {\n veryfirst: 'vfst',\n first: 'fst',\n last: 'lst',\n verylast: 'vlst',\n };\n class BladeController {\n constructor(config) {\n this.parent_ = null;\n this.blade = config.blade;\n this.view = config.view;\n this.viewProps = config.viewProps;\n const elem = this.view.element;\n this.blade.value('positions').emitter.on('change', () => {\n getAllBladePositions().forEach((pos) => {\n elem.classList.remove(className$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n this.blade.get('positions').forEach((pos) => {\n elem.classList.add(className$p(undefined, POS_TO_CLASS_NAME_MAP[pos]));\n });\n });\n this.viewProps.handleDispose(() => {\n disposeElement(elem);\n });\n }\n get parent() {\n return this.parent_;\n }\n }\n\n const SVG_NS = 'http://www.w3.org/2000/svg';\n function forceReflow(element) {\n element.offsetHeight;\n }\n function disableTransitionTemporarily(element, callback) {\n const t = element.style.transition;\n element.style.transition = 'none';\n callback();\n element.style.transition = t;\n }\n function supportsTouch(doc) {\n return doc.ontouchstart !== undefined;\n }\n function getGlobalObject() {\n return new Function('return this')();\n }\n function getWindowDocument() {\n const globalObj = forceCast(getGlobalObject());\n return globalObj.document;\n }\n function getCanvasContext(canvasElement) {\n const win = canvasElement.ownerDocument.defaultView;\n if (!win) {\n return null;\n }\n const isBrowser = 'document' in win;\n return isBrowser ? canvasElement.getContext('2d') : null;\n }\n const ICON_ID_TO_INNER_HTML_MAP = {\n check: '',\n dropdown: '',\n p2dpad: '',\n };\n function createSvgIconElement(document, iconId) {\n const elem = document.createElementNS(SVG_NS, 'svg');\n elem.innerHTML = ICON_ID_TO_INNER_HTML_MAP[iconId];\n return elem;\n }\n function insertElementAt(parentElement, element, index) {\n parentElement.insertBefore(element, parentElement.children[index]);\n }\n function removeElement(element) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n function removeChildElements(element) {\n while (element.children.length > 0) {\n element.removeChild(element.children[0]);\n }\n }\n function removeChildNodes(element) {\n while (element.childNodes.length > 0) {\n element.removeChild(element.childNodes[0]);\n }\n }\n function findNextTarget(ev) {\n if (ev.relatedTarget) {\n return forceCast(ev.relatedTarget);\n }\n if ('explicitOriginalTarget' in ev) {\n return ev.explicitOriginalTarget;\n }\n return null;\n }\n\n const className$o = ClassName('lbl');\n function createLabelNode(doc, label) {\n const frag = doc.createDocumentFragment();\n const lineNodes = label.split('\\n').map((line) => {\n return doc.createTextNode(line);\n });\n lineNodes.forEach((lineNode, index) => {\n if (index > 0) {\n frag.appendChild(doc.createElement('br'));\n }\n frag.appendChild(lineNode);\n });\n return frag;\n }\n class LabelView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$o());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('div');\n labelElem.classList.add(className$o('l'));\n bindValueMap(config.props, 'label', (value) => {\n if (isEmpty(value)) {\n this.element.classList.add(className$o(undefined, 'nol'));\n }\n else {\n this.element.classList.remove(className$o(undefined, 'nol'));\n removeChildNodes(labelElem);\n labelElem.appendChild(createLabelNode(doc, value));\n }\n });\n this.element.appendChild(labelElem);\n this.labelElement = labelElem;\n const valueElem = doc.createElement('div');\n valueElem.classList.add(className$o('v'));\n this.element.appendChild(valueElem);\n this.valueElement = valueElem;\n }\n }\n\n class LabelController extends BladeController {\n constructor(doc, config) {\n const viewProps = config.valueController.viewProps;\n super(Object.assign(Object.assign({}, config), { view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.props = config.props;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n }\n\n const ButtonBladePlugin = {\n id: 'button',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n title: p.required.string,\n view: p.required.constant('button'),\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new LabelController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: new ButtonController(args.document, {\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n }),\n });\n },\n api(args) {\n if (!(args.controller instanceof LabelController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof ButtonController)) {\n return null;\n }\n return new ButtonApi(args.controller);\n },\n };\n\n class ValueBladeController extends BladeController {\n constructor(config) {\n super(config);\n this.value = config.value;\n }\n }\n\n function createBlade() {\n return new ValueMap({\n positions: createValue([], {\n equals: deepEqualsArray,\n }),\n });\n }\n\n class Foldable extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(expanded) {\n const coreObj = {\n completed: true,\n expanded: expanded,\n expandedHeight: null,\n shouldFixHeight: false,\n temporaryExpanded: null,\n };\n const core = ValueMap.createCore(coreObj);\n return new Foldable(core);\n }\n get styleExpanded() {\n var _a;\n return (_a = this.get('temporaryExpanded')) !== null && _a !== void 0 ? _a : this.get('expanded');\n }\n get styleHeight() {\n if (!this.styleExpanded) {\n return '0';\n }\n const exHeight = this.get('expandedHeight');\n if (this.get('shouldFixHeight') && !isEmpty(exHeight)) {\n return `${exHeight}px`;\n }\n return 'auto';\n }\n bindExpandedClass(elem, expandedClassName) {\n bindValueMap(this, 'expanded', () => {\n const expanded = this.styleExpanded;\n if (expanded) {\n elem.classList.add(expandedClassName);\n }\n else {\n elem.classList.remove(expandedClassName);\n }\n });\n }\n }\n function computeExpandedFolderHeight(folder, containerElement) {\n let height = 0;\n disableTransitionTemporarily(containerElement, () => {\n folder.set('expandedHeight', null);\n folder.set('temporaryExpanded', true);\n forceReflow(containerElement);\n height = containerElement.clientHeight;\n folder.set('temporaryExpanded', null);\n forceReflow(containerElement);\n });\n return height;\n }\n function applyHeight(foldable, elem) {\n elem.style.height = foldable.styleHeight;\n }\n function bindFoldable(foldable, elem) {\n foldable.value('expanded').emitter.on('beforechange', () => {\n foldable.set('completed', false);\n if (isEmpty(foldable.get('expandedHeight'))) {\n foldable.set('expandedHeight', computeExpandedFolderHeight(foldable, elem));\n }\n foldable.set('shouldFixHeight', true);\n forceReflow(elem);\n });\n foldable.emitter.on('change', () => {\n applyHeight(foldable, elem);\n });\n applyHeight(foldable, elem);\n elem.addEventListener('transitionend', (ev) => {\n if (ev.propertyName !== 'height') {\n return;\n }\n foldable.set('shouldFixHeight', false);\n foldable.set('expandedHeight', null);\n foldable.set('completed', true);\n });\n }\n\n class RackLikeApi extends BladeApi {\n constructor(controller, rackApi) {\n super(controller);\n this.rackApi_ = rackApi;\n }\n }\n\n function addButtonAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'button' }));\n }\n function addFolderAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'folder' }));\n }\n function addSeparatorAsBlade(api, opt_params) {\n const params = opt_params || {};\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'separator' }));\n }\n function addTabAsBlade(api, params) {\n return api.addBlade(Object.assign(Object.assign({}, params), { view: 'tab' }));\n }\n\n class NestedOrderedSet {\n constructor(extract) {\n this.emitter = new Emitter();\n this.items_ = [];\n this.cache_ = new Set();\n this.onSubListAdd_ = this.onSubListAdd_.bind(this);\n this.onSubListRemove_ = this.onSubListRemove_.bind(this);\n this.extract_ = extract;\n }\n get items() {\n return this.items_;\n }\n allItems() {\n return Array.from(this.cache_);\n }\n find(callback) {\n for (const item of this.allItems()) {\n if (callback(item)) {\n return item;\n }\n }\n return null;\n }\n includes(item) {\n return this.cache_.has(item);\n }\n add(item, opt_index) {\n if (this.includes(item)) {\n throw TpError.shouldNeverHappen();\n }\n const index = opt_index !== undefined ? opt_index : this.items_.length;\n this.items_.splice(index, 0, item);\n this.cache_.add(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.on('add', this.onSubListAdd_);\n subList.emitter.on('remove', this.onSubListRemove_);\n subList.allItems().forEach((item) => {\n this.cache_.add(item);\n });\n }\n this.emitter.emit('add', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n remove(item) {\n const index = this.items_.indexOf(item);\n if (index < 0) {\n return;\n }\n this.items_.splice(index, 1);\n this.cache_.delete(item);\n const subList = this.extract_(item);\n if (subList) {\n subList.emitter.off('add', this.onSubListAdd_);\n subList.emitter.off('remove', this.onSubListRemove_);\n }\n this.emitter.emit('remove', {\n index: index,\n item: item,\n root: this,\n target: this,\n });\n }\n onSubListAdd_(ev) {\n this.cache_.add(ev.item);\n this.emitter.emit('add', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n onSubListRemove_(ev) {\n this.cache_.delete(ev.item);\n this.emitter.emit('remove', {\n index: ev.index,\n item: ev.item,\n root: this,\n target: ev.target,\n });\n }\n }\n\n class InputBindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onBindingChange_ = this.onBindingChange_.bind(this);\n this.emitter_ = new Emitter();\n this.controller_.binding.emitter.on('change', this.onBindingChange_);\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n refresh() {\n this.controller_.binding.read();\n }\n onBindingChange_(ev) {\n const value = ev.sender.target.read();\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, forceCast(value), this.controller_.binding.target.presetKey, ev.options.last),\n });\n }\n }\n\n class InputBindingController extends LabelController {\n constructor(doc, config) {\n super(doc, config);\n this.binding = config.binding;\n }\n }\n\n class MonitorBindingApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.onBindingUpdate_ = this.onBindingUpdate_.bind(this);\n this.emitter_ = new Emitter();\n this.controller_.binding.emitter.on('update', this.onBindingUpdate_);\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n refresh() {\n this.controller_.binding.read();\n }\n onBindingUpdate_(ev) {\n const value = ev.sender.target.read();\n this.emitter_.emit('update', {\n event: new TpUpdateEvent(this, forceCast(value), this.controller_.binding.target.presetKey),\n });\n }\n }\n\n class MonitorBindingController extends LabelController {\n constructor(doc, config) {\n super(doc, config);\n this.binding = config.binding;\n this.viewProps.bindDisabled(this.binding.ticker);\n this.viewProps.handleDispose(() => {\n this.binding.dispose();\n });\n }\n }\n\n function findSubBladeApiSet(api) {\n if (api instanceof RackApi) {\n return api['apiSet_'];\n }\n if (api instanceof RackLikeApi) {\n return api['rackApi_']['apiSet_'];\n }\n return null;\n }\n function getApiByController(apiSet, controller) {\n const api = apiSet.find((api) => api.controller_ === controller);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n function createBindingTarget(obj, key, opt_id) {\n if (!BindingTarget.isBindable(obj)) {\n throw TpError.notBindable();\n }\n return new BindingTarget(obj, key, opt_id);\n }\n class RackApi extends BladeApi {\n constructor(controller, pool) {\n super(controller);\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n this.onRackInputChange_ = this.onRackInputChange_.bind(this);\n this.onRackMonitorUpdate_ = this.onRackMonitorUpdate_.bind(this);\n this.emitter_ = new Emitter();\n this.apiSet_ = new NestedOrderedSet(findSubBladeApiSet);\n this.pool_ = pool;\n const rack = this.controller_.rack;\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n rack.emitter.on('inputchange', this.onRackInputChange_);\n rack.emitter.on('monitorupdate', this.onRackMonitorUpdate_);\n rack.children.forEach((bc) => {\n this.setUpApi_(bc);\n });\n }\n get children() {\n return this.controller_.rack.children.map((bc) => getApiByController(this.apiSet_, bc));\n }\n addInput(object, key, opt_params) {\n const params = opt_params || {};\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createInput(doc, createBindingTarget(object, key, params.presetKey), params);\n const api = new InputBindingApi(bc);\n return this.add(api, params.index);\n }\n addMonitor(object, key, opt_params) {\n const params = opt_params || {};\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createMonitor(doc, createBindingTarget(object, key), params);\n const api = new MonitorBindingApi(bc);\n return forceCast(this.add(api, params.index));\n }\n addFolder(params) {\n return addFolderAsBlade(this, params);\n }\n addButton(params) {\n return addButtonAsBlade(this, params);\n }\n addSeparator(opt_params) {\n return addSeparatorAsBlade(this, opt_params);\n }\n addTab(params) {\n return addTabAsBlade(this, params);\n }\n add(api, opt_index) {\n this.controller_.rack.add(api.controller_, opt_index);\n const gapi = this.apiSet_.find((a) => a.controller_ === api.controller_);\n if (gapi) {\n this.apiSet_.remove(gapi);\n }\n this.apiSet_.add(api);\n return api;\n }\n remove(api) {\n this.controller_.rack.remove(api.controller_);\n }\n addBlade(params) {\n const doc = this.controller_.view.element.ownerDocument;\n const bc = this.pool_.createBlade(doc, params);\n const api = this.pool_.createBladeApi(bc);\n return this.add(api, params.index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n setUpApi_(bc) {\n const api = this.apiSet_.find((api) => api.controller_ === bc);\n if (!api) {\n this.apiSet_.add(this.pool_.createBladeApi(bc));\n }\n }\n onRackAdd_(ev) {\n this.setUpApi_(ev.bladeController);\n }\n onRackRemove_(ev) {\n if (ev.isRoot) {\n const api = getApiByController(this.apiSet_, ev.bladeController);\n this.apiSet_.remove(api);\n }\n }\n onRackInputChange_(ev) {\n const bc = ev.bladeController;\n if (bc instanceof InputBindingController) {\n const api = getApiByController(this.apiSet_, bc);\n const binding = bc.binding;\n this.emitter_.emit('change', {\n event: new TpChangeEvent(api, forceCast(binding.target.read()), binding.target.presetKey, ev.options.last),\n });\n }\n else if (bc instanceof ValueBladeController) {\n const api = getApiByController(this.apiSet_, bc);\n this.emitter_.emit('change', {\n event: new TpChangeEvent(api, bc.value.rawValue, undefined, ev.options.last),\n });\n }\n }\n onRackMonitorUpdate_(ev) {\n if (!(ev.bladeController instanceof MonitorBindingController)) {\n throw TpError.shouldNeverHappen();\n }\n const api = getApiByController(this.apiSet_, ev.bladeController);\n const binding = ev.bladeController.binding;\n this.emitter_.emit('update', {\n event: new TpUpdateEvent(api, forceCast(binding.target.read()), binding.target.presetKey),\n });\n }\n }\n\n class FolderApi extends RackLikeApi {\n constructor(controller, pool) {\n super(controller, new RackApi(controller.rackController, pool));\n this.emitter_ = new Emitter();\n this.controller_.foldable\n .value('expanded')\n .emitter.on('change', (ev) => {\n this.emitter_.emit('fold', {\n event: new TpFoldEvent(this, ev.sender.rawValue),\n });\n });\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: ev,\n });\n });\n this.rackApi_.on('update', (ev) => {\n this.emitter_.emit('update', {\n event: ev,\n });\n });\n }\n get expanded() {\n return this.controller_.foldable.get('expanded');\n }\n set expanded(expanded) {\n this.controller_.foldable.set('expanded', expanded);\n }\n get title() {\n return this.controller_.props.get('title');\n }\n set title(title) {\n this.controller_.props.set('title', title);\n }\n get children() {\n return this.rackApi_.children;\n }\n addInput(object, key, opt_params) {\n return this.rackApi_.addInput(object, key, opt_params);\n }\n addMonitor(object, key, opt_params) {\n return this.rackApi_.addMonitor(object, key, opt_params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addSeparator(opt_params) {\n return this.rackApi_.addSeparator(opt_params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n return this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class RackLikeController extends BladeController {\n constructor(config) {\n super({\n blade: config.blade,\n view: config.view,\n viewProps: config.rackController.viewProps,\n });\n this.rackController = config.rackController;\n }\n }\n\n class PlainView {\n constructor(doc, config) {\n const className = ClassName(config.viewName);\n this.element = doc.createElement('div');\n this.element.classList.add(className());\n config.viewProps.bindClassModifiers(this.element);\n }\n }\n\n function findInputBindingController(bcs, b) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof InputBindingController && bc.binding === b) {\n return bc;\n }\n }\n return null;\n }\n function findMonitorBindingController(bcs, b) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof MonitorBindingController && bc.binding === b) {\n return bc;\n }\n }\n return null;\n }\n function findValueBladeController(bcs, v) {\n for (let i = 0; i < bcs.length; i++) {\n const bc = bcs[i];\n if (bc instanceof ValueBladeController && bc.value === v) {\n return bc;\n }\n }\n return null;\n }\n function findSubRack(bc) {\n if (bc instanceof RackController) {\n return bc.rack;\n }\n if (bc instanceof RackLikeController) {\n return bc.rackController.rack;\n }\n return null;\n }\n function findSubBladeControllerSet(bc) {\n const rack = findSubRack(bc);\n return rack ? rack['bcSet_'] : null;\n }\n class BladeRack {\n constructor(blade) {\n var _a;\n this.onBladePositionsChange_ = this.onBladePositionsChange_.bind(this);\n this.onSetAdd_ = this.onSetAdd_.bind(this);\n this.onSetRemove_ = this.onSetRemove_.bind(this);\n this.onChildDispose_ = this.onChildDispose_.bind(this);\n this.onChildPositionsChange_ = this.onChildPositionsChange_.bind(this);\n this.onChildInputChange_ = this.onChildInputChange_.bind(this);\n this.onChildMonitorUpdate_ = this.onChildMonitorUpdate_.bind(this);\n this.onChildValueChange_ = this.onChildValueChange_.bind(this);\n this.onChildViewPropsChange_ = this.onChildViewPropsChange_.bind(this);\n this.onDescendantLayout_ = this.onDescendantLayout_.bind(this);\n this.onDescendantInputChange_ = this.onDescendantInputChange_.bind(this);\n this.onDescendantMonitorUpdate_ =\n this.onDescendantMonitorUpdate_.bind(this);\n this.emitter = new Emitter();\n this.blade_ = blade !== null && blade !== void 0 ? blade : null;\n (_a = this.blade_) === null || _a === void 0 ? void 0 : _a.value('positions').emitter.on('change', this.onBladePositionsChange_);\n this.bcSet_ = new NestedOrderedSet(findSubBladeControllerSet);\n this.bcSet_.emitter.on('add', this.onSetAdd_);\n this.bcSet_.emitter.on('remove', this.onSetRemove_);\n }\n get children() {\n return this.bcSet_.items;\n }\n add(bc, opt_index) {\n if (bc.parent) {\n bc.parent.remove(bc);\n }\n bc['parent_'] = this;\n this.bcSet_.add(bc, opt_index);\n }\n remove(bc) {\n bc['parent_'] = null;\n this.bcSet_.remove(bc);\n }\n find(controllerClass) {\n return forceCast(this.bcSet_.allItems().filter((bc) => {\n return bc instanceof controllerClass;\n }));\n }\n onSetAdd_(ev) {\n this.updatePositions_();\n const isRoot = ev.target === ev.root;\n this.emitter.emit('add', {\n bladeController: ev.item,\n index: ev.index,\n isRoot: isRoot,\n sender: this,\n });\n if (!isRoot) {\n return;\n }\n const bc = ev.item;\n bc.viewProps.emitter.on('change', this.onChildViewPropsChange_);\n bc.blade\n .value('positions')\n .emitter.on('change', this.onChildPositionsChange_);\n bc.viewProps.handleDispose(this.onChildDispose_);\n if (bc instanceof InputBindingController) {\n bc.binding.emitter.on('change', this.onChildInputChange_);\n }\n else if (bc instanceof MonitorBindingController) {\n bc.binding.emitter.on('update', this.onChildMonitorUpdate_);\n }\n else if (bc instanceof ValueBladeController) {\n bc.value.emitter.on('change', this.onChildValueChange_);\n }\n else {\n const rack = findSubRack(bc);\n if (rack) {\n const emitter = rack.emitter;\n emitter.on('layout', this.onDescendantLayout_);\n emitter.on('inputchange', this.onDescendantInputChange_);\n emitter.on('monitorupdate', this.onDescendantMonitorUpdate_);\n }\n }\n }\n onSetRemove_(ev) {\n this.updatePositions_();\n const isRoot = ev.target === ev.root;\n this.emitter.emit('remove', {\n bladeController: ev.item,\n isRoot: isRoot,\n sender: this,\n });\n if (!isRoot) {\n return;\n }\n const bc = ev.item;\n if (bc instanceof InputBindingController) {\n bc.binding.emitter.off('change', this.onChildInputChange_);\n }\n else if (bc instanceof MonitorBindingController) {\n bc.binding.emitter.off('update', this.onChildMonitorUpdate_);\n }\n else if (bc instanceof ValueBladeController) {\n bc.value.emitter.off('change', this.onChildValueChange_);\n }\n else {\n const rack = findSubRack(bc);\n if (rack) {\n const emitter = rack.emitter;\n emitter.off('layout', this.onDescendantLayout_);\n emitter.off('inputchange', this.onDescendantInputChange_);\n emitter.off('monitorupdate', this.onDescendantMonitorUpdate_);\n }\n }\n }\n updatePositions_() {\n const visibleItems = this.bcSet_.items.filter((bc) => !bc.viewProps.get('hidden'));\n const firstVisibleItem = visibleItems[0];\n const lastVisibleItem = visibleItems[visibleItems.length - 1];\n this.bcSet_.items.forEach((bc) => {\n const ps = [];\n if (bc === firstVisibleItem) {\n ps.push('first');\n if (!this.blade_ ||\n this.blade_.get('positions').includes('veryfirst')) {\n ps.push('veryfirst');\n }\n }\n if (bc === lastVisibleItem) {\n ps.push('last');\n if (!this.blade_ || this.blade_.get('positions').includes('verylast')) {\n ps.push('verylast');\n }\n }\n bc.blade.set('positions', ps);\n });\n }\n onChildPositionsChange_() {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildViewPropsChange_(_ev) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onChildDispose_() {\n const disposedUcs = this.bcSet_.items.filter((bc) => {\n return bc.viewProps.get('disposed');\n });\n disposedUcs.forEach((bc) => {\n this.bcSet_.remove(bc);\n });\n }\n onChildInputChange_(ev) {\n const bc = findInputBindingController(this.find(InputBindingController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('inputchange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onChildMonitorUpdate_(ev) {\n const bc = findMonitorBindingController(this.find(MonitorBindingController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('monitorupdate', {\n bladeController: bc,\n sender: this,\n });\n }\n onChildValueChange_(ev) {\n const bc = findValueBladeController(this.find(ValueBladeController), ev.sender);\n if (!bc) {\n throw TpError.shouldNeverHappen();\n }\n this.emitter.emit('inputchange', {\n bladeController: bc,\n options: ev.options,\n sender: this,\n });\n }\n onDescendantLayout_(_) {\n this.updatePositions_();\n this.emitter.emit('layout', {\n sender: this,\n });\n }\n onDescendantInputChange_(ev) {\n this.emitter.emit('inputchange', {\n bladeController: ev.bladeController,\n options: ev.options,\n sender: this,\n });\n }\n onDescendantMonitorUpdate_(ev) {\n this.emitter.emit('monitorupdate', {\n bladeController: ev.bladeController,\n sender: this,\n });\n }\n onBladePositionsChange_() {\n this.updatePositions_();\n }\n }\n\n class RackController extends BladeController {\n constructor(doc, config) {\n super(Object.assign(Object.assign({}, config), { view: new PlainView(doc, {\n viewName: 'brk',\n viewProps: config.viewProps,\n }) }));\n this.onRackAdd_ = this.onRackAdd_.bind(this);\n this.onRackRemove_ = this.onRackRemove_.bind(this);\n const rack = new BladeRack(config.root ? undefined : config.blade);\n rack.emitter.on('add', this.onRackAdd_);\n rack.emitter.on('remove', this.onRackRemove_);\n this.rack = rack;\n this.viewProps.handleDispose(() => {\n for (let i = this.rack.children.length - 1; i >= 0; i--) {\n const bc = this.rack.children[i];\n bc.viewProps.set('disposed', true);\n }\n });\n }\n onRackAdd_(ev) {\n if (!ev.isRoot) {\n return;\n }\n insertElementAt(this.view.element, ev.bladeController.view.element, ev.index);\n }\n onRackRemove_(ev) {\n if (!ev.isRoot) {\n return;\n }\n removeElement(ev.bladeController.view.element);\n }\n }\n\n const bladeContainerClassName = ClassName('cnt');\n\n class FolderView {\n constructor(doc, config) {\n this.className_ = ClassName(config.viewName || 'fld');\n this.element = doc.createElement('div');\n this.element.classList.add(this.className_(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n this.foldable_ = config.foldable;\n this.foldable_.bindExpandedClass(this.element, this.className_(undefined, 'expanded'));\n bindValueMap(this.foldable_, 'completed', valueToClassName(this.element, this.className_(undefined, 'cpl')));\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(this.className_('b'));\n bindValueMap(config.props, 'title', (title) => {\n if (isEmpty(title)) {\n this.element.classList.add(this.className_(undefined, 'not'));\n }\n else {\n this.element.classList.remove(this.className_(undefined, 'not'));\n }\n });\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(this.className_('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(this.className_('m'));\n this.buttonElement.appendChild(markElem);\n const containerElem = config.containerElement;\n containerElem.classList.add(this.className_('c'));\n this.element.appendChild(containerElem);\n this.containerElement = containerElem;\n }\n }\n\n class FolderController extends RackLikeController {\n constructor(doc, config) {\n var _a;\n const foldable = Foldable.create((_a = config.expanded) !== null && _a !== void 0 ? _a : true);\n const rc = new RackController(doc, {\n blade: config.blade,\n root: config.root,\n viewProps: config.viewProps,\n });\n super(Object.assign(Object.assign({}, config), { rackController: rc, view: new FolderView(doc, {\n containerElement: rc.view.element,\n foldable: foldable,\n props: config.props,\n viewName: config.root ? 'rot' : undefined,\n viewProps: config.viewProps,\n }) }));\n this.onTitleClick_ = this.onTitleClick_.bind(this);\n this.props = config.props;\n this.foldable = foldable;\n bindFoldable(this.foldable, this.view.containerElement);\n this.view.buttonElement.addEventListener('click', this.onTitleClick_);\n }\n get document() {\n return this.view.element.ownerDocument;\n }\n onTitleClick_() {\n this.foldable.set('expanded', !this.foldable.get('expanded'));\n }\n }\n\n const FolderBladePlugin = {\n id: 'folder',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n title: p.required.string,\n view: p.required.constant('folder'),\n expanded: p.optional.boolean,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new FolderController(args.document, {\n blade: args.blade,\n expanded: args.params.expanded,\n props: ValueMap.fromObject({\n title: args.params.title,\n }),\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof FolderController)) {\n return null;\n }\n return new FolderApi(args.controller, args.pool);\n },\n };\n\n class LabeledValueController extends ValueBladeController {\n constructor(doc, config) {\n const viewProps = config.valueController.viewProps;\n super(Object.assign(Object.assign({}, config), { value: config.valueController.value, view: new LabelView(doc, {\n props: config.props,\n viewProps: viewProps,\n }), viewProps: viewProps }));\n this.props = config.props;\n this.valueController = config.valueController;\n this.view.valueElement.appendChild(this.valueController.view.element);\n }\n }\n\n class SeparatorApi extends BladeApi {\n }\n\n const className$n = ClassName('spr');\n class SeparatorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$n());\n config.viewProps.bindClassModifiers(this.element);\n const hrElem = doc.createElement('hr');\n hrElem.classList.add(className$n('r'));\n this.element.appendChild(hrElem);\n }\n }\n\n class SeparatorController extends BladeController {\n constructor(doc, config) {\n super(Object.assign(Object.assign({}, config), { view: new SeparatorView(doc, {\n viewProps: config.viewProps,\n }) }));\n }\n }\n\n const SeparatorBladePlugin = {\n id: 'separator',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n view: p.required.constant('separator'),\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n return new SeparatorController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n },\n api(args) {\n if (!(args.controller instanceof SeparatorController)) {\n return null;\n }\n return new SeparatorApi(args.controller);\n },\n };\n\n const className$m = ClassName('');\n function valueToModifier(elem, modifier) {\n return valueToClassName(elem, className$m(undefined, modifier));\n }\n class ViewProps extends ValueMap {\n constructor(valueMap) {\n super(valueMap);\n }\n static create(opt_initialValue) {\n var _a, _b;\n const initialValue = opt_initialValue !== null && opt_initialValue !== void 0 ? opt_initialValue : {};\n const coreObj = {\n disabled: (_a = initialValue.disabled) !== null && _a !== void 0 ? _a : false,\n disposed: false,\n hidden: (_b = initialValue.hidden) !== null && _b !== void 0 ? _b : false,\n };\n const core = ValueMap.createCore(coreObj);\n return new ViewProps(core);\n }\n bindClassModifiers(elem) {\n bindValueMap(this, 'disabled', valueToModifier(elem, 'disabled'));\n bindValueMap(this, 'hidden', valueToModifier(elem, 'hidden'));\n }\n bindDisabled(target) {\n bindValueMap(this, 'disabled', (disabled) => {\n target.disabled = disabled;\n });\n }\n bindTabIndex(elem) {\n bindValueMap(this, 'disabled', (disabled) => {\n elem.tabIndex = disabled ? -1 : 0;\n });\n }\n handleDispose(callback) {\n this.value('disposed').emitter.on('change', (disposed) => {\n if (disposed) {\n callback();\n }\n });\n }\n }\n\n const className$l = ClassName('tbi');\n class TabItemView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$l());\n config.viewProps.bindClassModifiers(this.element);\n bindValueMap(config.props, 'selected', (selected) => {\n if (selected) {\n this.element.classList.add(className$l(undefined, 'sel'));\n }\n else {\n this.element.classList.remove(className$l(undefined, 'sel'));\n }\n });\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$l('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const titleElem = doc.createElement('div');\n titleElem.classList.add(className$l('t'));\n bindValueToTextContent(config.props.value('title'), titleElem);\n this.buttonElement.appendChild(titleElem);\n this.titleElement = titleElem;\n }\n }\n\n class TabItemController {\n constructor(doc, config) {\n this.emitter = new Emitter();\n this.onClick_ = this.onClick_.bind(this);\n this.props = config.props;\n this.viewProps = config.viewProps;\n this.view = new TabItemView(doc, {\n props: config.props,\n viewProps: config.viewProps,\n });\n this.view.buttonElement.addEventListener('click', this.onClick_);\n }\n onClick_() {\n this.emitter.emit('click', {\n sender: this,\n });\n }\n }\n\n class TabPageController {\n constructor(doc, config) {\n this.onItemClick_ = this.onItemClick_.bind(this);\n this.ic_ = new TabItemController(doc, {\n props: config.itemProps,\n viewProps: ViewProps.create(),\n });\n this.ic_.emitter.on('click', this.onItemClick_);\n this.cc_ = new RackController(doc, {\n blade: createBlade(),\n viewProps: ViewProps.create(),\n });\n this.props = config.props;\n bindValueMap(this.props, 'selected', (selected) => {\n this.itemController.props.set('selected', selected);\n this.contentController.viewProps.set('hidden', !selected);\n });\n }\n get itemController() {\n return this.ic_;\n }\n get contentController() {\n return this.cc_;\n }\n onItemClick_() {\n this.props.set('selected', true);\n }\n }\n\n class TabPageApi {\n constructor(controller, contentRackApi) {\n this.controller_ = controller;\n this.rackApi_ = contentRackApi;\n }\n get title() {\n var _a;\n return (_a = this.controller_.itemController.props.get('title')) !== null && _a !== void 0 ? _a : '';\n }\n set title(title) {\n this.controller_.itemController.props.set('title', title);\n }\n get selected() {\n return this.controller_.props.get('selected');\n }\n set selected(selected) {\n this.controller_.props.set('selected', selected);\n }\n get children() {\n return this.rackApi_.children;\n }\n addButton(params) {\n return this.rackApi_.addButton(params);\n }\n addFolder(params) {\n return this.rackApi_.addFolder(params);\n }\n addSeparator(opt_params) {\n return this.rackApi_.addSeparator(opt_params);\n }\n addTab(params) {\n return this.rackApi_.addTab(params);\n }\n add(api, opt_index) {\n this.rackApi_.add(api, opt_index);\n }\n remove(api) {\n this.rackApi_.remove(api);\n }\n addInput(object, key, opt_params) {\n return this.rackApi_.addInput(object, key, opt_params);\n }\n addMonitor(object, key, opt_params) {\n return this.rackApi_.addMonitor(object, key, opt_params);\n }\n addBlade(params) {\n return this.rackApi_.addBlade(params);\n }\n }\n\n class TabApi extends RackLikeApi {\n constructor(controller, pool) {\n super(controller, new RackApi(controller.rackController, pool));\n this.onPageAdd_ = this.onPageAdd_.bind(this);\n this.onPageRemove_ = this.onPageRemove_.bind(this);\n this.emitter_ = new Emitter();\n this.pageApiMap_ = new Map();\n this.rackApi_.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: ev,\n });\n });\n this.rackApi_.on('update', (ev) => {\n this.emitter_.emit('update', {\n event: ev,\n });\n });\n this.controller_.pageSet.emitter.on('add', this.onPageAdd_);\n this.controller_.pageSet.emitter.on('remove', this.onPageRemove_);\n this.controller_.pageSet.items.forEach((pc) => {\n this.setUpPageApi_(pc);\n });\n }\n get pages() {\n return this.controller_.pageSet.items.map((pc) => {\n const api = this.pageApiMap_.get(pc);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n });\n }\n addPage(params) {\n const doc = this.controller_.view.element.ownerDocument;\n const pc = new TabPageController(doc, {\n itemProps: ValueMap.fromObject({\n selected: false,\n title: params.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n });\n this.controller_.add(pc, params.index);\n const api = this.pageApiMap_.get(pc);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n removePage(index) {\n this.controller_.remove(index);\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n setUpPageApi_(pc) {\n const rackApi = this.rackApi_['apiSet_'].find((api) => api.controller_ === pc.contentController);\n if (!rackApi) {\n throw TpError.shouldNeverHappen();\n }\n const api = new TabPageApi(pc, rackApi);\n this.pageApiMap_.set(pc, api);\n }\n onPageAdd_(ev) {\n this.setUpPageApi_(ev.item);\n }\n onPageRemove_(ev) {\n const api = this.pageApiMap_.get(ev.item);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n this.pageApiMap_.delete(ev.item);\n }\n }\n\n const className$k = ClassName('tab');\n class TabView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$k(), bladeContainerClassName());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.empty, valueToClassName(this.element, className$k(undefined, 'nop')));\n const itemsElem = doc.createElement('div');\n itemsElem.classList.add(className$k('i'));\n this.element.appendChild(itemsElem);\n this.itemsElement = itemsElem;\n const contentsElem = config.contentsElement;\n contentsElem.classList.add(className$k('c'));\n this.element.appendChild(contentsElem);\n this.contentsElement = contentsElem;\n }\n }\n\n class TabController extends RackLikeController {\n constructor(doc, config) {\n const cr = new RackController(doc, {\n blade: config.blade,\n viewProps: config.viewProps,\n });\n const empty = createValue(true);\n super({\n blade: config.blade,\n rackController: cr,\n view: new TabView(doc, {\n contentsElement: cr.view.element,\n empty: empty,\n viewProps: config.viewProps,\n }),\n });\n this.onPageAdd_ = this.onPageAdd_.bind(this);\n this.onPageRemove_ = this.onPageRemove_.bind(this);\n this.onPageSelectedChange_ = this.onPageSelectedChange_.bind(this);\n this.pageSet_ = new NestedOrderedSet(() => null);\n this.pageSet_.emitter.on('add', this.onPageAdd_);\n this.pageSet_.emitter.on('remove', this.onPageRemove_);\n this.empty_ = empty;\n this.applyPages_();\n }\n get pageSet() {\n return this.pageSet_;\n }\n add(pc, opt_index) {\n this.pageSet_.add(pc, opt_index !== null && opt_index !== void 0 ? opt_index : this.pageSet_.items.length);\n }\n remove(index) {\n this.pageSet_.remove(this.pageSet_.items[index]);\n }\n applyPages_() {\n this.keepSelection_();\n this.empty_.rawValue = this.pageSet_.items.length === 0;\n }\n onPageAdd_(ev) {\n const pc = ev.item;\n insertElementAt(this.view.itemsElement, pc.itemController.view.element, ev.index);\n this.rackController.rack.add(pc.contentController, ev.index);\n pc.props.value('selected').emitter.on('change', this.onPageSelectedChange_);\n this.applyPages_();\n }\n onPageRemove_(ev) {\n const pc = ev.item;\n removeElement(pc.itemController.view.element);\n this.rackController.rack.remove(pc.contentController);\n pc.props\n .value('selected')\n .emitter.off('change', this.onPageSelectedChange_);\n this.applyPages_();\n }\n keepSelection_() {\n if (this.pageSet_.items.length === 0) {\n return;\n }\n const firstSelIndex = this.pageSet_.items.findIndex((pc) => pc.props.get('selected'));\n if (firstSelIndex < 0) {\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === 0);\n });\n }\n else {\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === firstSelIndex);\n });\n }\n }\n onPageSelectedChange_(ev) {\n if (ev.rawValue) {\n const index = this.pageSet_.items.findIndex((pc) => pc.props.value('selected') === ev.sender);\n this.pageSet_.items.forEach((pc, i) => {\n pc.props.set('selected', i === index);\n });\n }\n else {\n this.keepSelection_();\n }\n }\n }\n\n const TabBladePlugin = {\n id: 'tab',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n pages: p.required.array(p.required.object({ title: p.required.string })),\n view: p.required.constant('tab'),\n });\n if (!result || result.pages.length === 0) {\n return null;\n }\n return { params: result };\n },\n controller(args) {\n const c = new TabController(args.document, {\n blade: args.blade,\n viewProps: args.viewProps,\n });\n args.params.pages.forEach((p) => {\n const pc = new TabPageController(args.document, {\n itemProps: ValueMap.fromObject({\n selected: false,\n title: p.title,\n }),\n props: ValueMap.fromObject({\n selected: false,\n }),\n });\n c.add(pc);\n });\n return c;\n },\n api(args) {\n if (!(args.controller instanceof TabController)) {\n return null;\n }\n return new TabApi(args.controller, args.pool);\n },\n };\n\n function createBladeController(plugin, args) {\n const ac = plugin.accept(args.params);\n if (!ac) {\n return null;\n }\n const disabled = ParamsParsers.optional.boolean(args.params['disabled']).value;\n const hidden = ParamsParsers.optional.boolean(args.params['hidden']).value;\n return plugin.controller({\n blade: createBlade(),\n document: args.document,\n params: forceCast(Object.assign(Object.assign({}, ac.params), { disabled: disabled, hidden: hidden })),\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n }\n\n class ManualTicker {\n constructor() {\n this.disabled = false;\n this.emitter = new Emitter();\n }\n dispose() { }\n tick() {\n if (this.disabled) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n }\n\n class IntervalTicker {\n constructor(doc, interval) {\n this.disabled_ = false;\n this.timerId_ = null;\n this.onTick_ = this.onTick_.bind(this);\n this.doc_ = doc;\n this.emitter = new Emitter();\n this.interval_ = interval;\n this.setTimer_();\n }\n get disabled() {\n return this.disabled_;\n }\n set disabled(inactive) {\n this.disabled_ = inactive;\n if (this.disabled_) {\n this.clearTimer_();\n }\n else {\n this.setTimer_();\n }\n }\n dispose() {\n this.clearTimer_();\n }\n clearTimer_() {\n if (this.timerId_ === null) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n win.clearInterval(this.timerId_);\n }\n this.timerId_ = null;\n }\n setTimer_() {\n this.clearTimer_();\n if (this.interval_ <= 0) {\n return;\n }\n const win = this.doc_.defaultView;\n if (win) {\n this.timerId_ = win.setInterval(this.onTick_, this.interval_);\n }\n }\n onTick_() {\n if (this.disabled_) {\n return;\n }\n this.emitter.emit('tick', {\n sender: this,\n });\n }\n }\n\n class CompositeConstraint {\n constructor(constraints) {\n this.constraints = constraints;\n }\n constrain(value) {\n return this.constraints.reduce((result, c) => {\n return c.constrain(result);\n }, value);\n }\n }\n function findConstraint(c, constraintClass) {\n if (c instanceof constraintClass) {\n return c;\n }\n if (c instanceof CompositeConstraint) {\n const result = c.constraints.reduce((tmpResult, sc) => {\n if (tmpResult) {\n return tmpResult;\n }\n return sc instanceof constraintClass ? sc : null;\n }, null);\n if (result) {\n return result;\n }\n }\n return null;\n }\n\n class ListConstraint {\n constructor(options) {\n this.options = options;\n }\n constrain(value) {\n const opts = this.options;\n if (opts.length === 0) {\n return value;\n }\n const matched = opts.filter((item) => {\n return item.value === value;\n }).length > 0;\n return matched ? value : opts[0].value;\n }\n }\n\n class RangeConstraint {\n constructor(config) {\n this.maxValue = config.max;\n this.minValue = config.min;\n }\n constrain(value) {\n let result = value;\n if (!isEmpty(this.minValue)) {\n result = Math.max(result, this.minValue);\n }\n if (!isEmpty(this.maxValue)) {\n result = Math.min(result, this.maxValue);\n }\n return result;\n }\n }\n\n class StepConstraint {\n constructor(step) {\n this.step = step;\n }\n constrain(value) {\n const r = value < 0\n ? -Math.round(-value / this.step)\n : Math.round(value / this.step);\n return r * this.step;\n }\n }\n\n const className$j = ClassName('lst');\n class ListView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.props_ = config.props;\n this.element = doc.createElement('div');\n this.element.classList.add(className$j());\n config.viewProps.bindClassModifiers(this.element);\n const selectElem = doc.createElement('select');\n selectElem.classList.add(className$j('s'));\n bindValueMap(this.props_, 'options', (opts) => {\n removeChildElements(selectElem);\n opts.forEach((item, index) => {\n const optionElem = doc.createElement('option');\n optionElem.dataset.index = String(index);\n optionElem.textContent = item.text;\n optionElem.value = String(item.value);\n selectElem.appendChild(optionElem);\n });\n });\n config.viewProps.bindDisabled(selectElem);\n this.element.appendChild(selectElem);\n this.selectElement = selectElem;\n const markElem = doc.createElement('div');\n markElem.classList.add(className$j('m'));\n markElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n this.element.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value_ = config.value;\n this.update_();\n }\n update_() {\n this.selectElement.value = String(this.value_.rawValue);\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class ListController {\n constructor(doc, config) {\n this.onSelectChange_ = this.onSelectChange_.bind(this);\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ListView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.selectElement.addEventListener('change', this.onSelectChange_);\n }\n onSelectChange_(e) {\n const selectElem = forceCast(e.currentTarget);\n const optElem = selectElem.selectedOptions.item(0);\n if (!optElem) {\n return;\n }\n const itemIndex = Number(optElem.dataset.index);\n this.value.rawValue = this.props.get('options')[itemIndex].value;\n }\n }\n\n const className$i = ClassName('pop');\n class PopupView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$i());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.shows, valueToClassName(this.element, className$i(undefined, 'v')));\n }\n }\n\n class PopupController {\n constructor(doc, config) {\n this.shows = createValue(false);\n this.viewProps = config.viewProps;\n this.view = new PopupView(doc, {\n shows: this.shows,\n viewProps: this.viewProps,\n });\n }\n }\n\n const className$h = ClassName('txt');\n class TextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className$h());\n config.viewProps.bindClassModifiers(this.element);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$h('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onChange_);\n this.value_ = config.value;\n this.refresh();\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value_.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n }\n\n class TextController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new TextView(doc, {\n props: config.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n }\n\n function boolToString(value) {\n return String(value);\n }\n function boolFromUnknown(value) {\n if (value === 'false') {\n return false;\n }\n return !!value;\n }\n function BooleanFormatter(value) {\n return boolToString(value);\n }\n\n class NumberLiteralNode {\n constructor(text) {\n this.text = text;\n }\n evaluate() {\n return Number(this.text);\n }\n toString() {\n return this.text;\n }\n }\n const BINARY_OPERATION_MAP = {\n '**': (v1, v2) => Math.pow(v1, v2),\n '*': (v1, v2) => v1 * v2,\n '/': (v1, v2) => v1 / v2,\n '%': (v1, v2) => v1 % v2,\n '+': (v1, v2) => v1 + v2,\n '-': (v1, v2) => v1 - v2,\n '<<': (v1, v2) => v1 << v2,\n '>>': (v1, v2) => v1 >> v2,\n '>>>': (v1, v2) => v1 >>> v2,\n '&': (v1, v2) => v1 & v2,\n '^': (v1, v2) => v1 ^ v2,\n '|': (v1, v2) => v1 | v2,\n };\n class BinaryOperationNode {\n constructor(operator, left, right) {\n this.left = left;\n this.operator = operator;\n this.right = right;\n }\n evaluate() {\n const op = BINARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected binary operator: '${this.operator}`);\n }\n return op(this.left.evaluate(), this.right.evaluate());\n }\n toString() {\n return [\n 'b(',\n this.left.toString(),\n this.operator,\n this.right.toString(),\n ')',\n ].join(' ');\n }\n }\n const UNARY_OPERATION_MAP = {\n '+': (v) => v,\n '-': (v) => -v,\n '~': (v) => ~v,\n };\n class UnaryOperationNode {\n constructor(operator, expr) {\n this.operator = operator;\n this.expression = expr;\n }\n evaluate() {\n const op = UNARY_OPERATION_MAP[this.operator];\n if (!op) {\n throw new Error(`unexpected unary operator: '${this.operator}`);\n }\n return op(this.expression.evaluate());\n }\n toString() {\n return ['u(', this.operator, this.expression.toString(), ')'].join(' ');\n }\n }\n\n function combineReader(parsers) {\n return (text, cursor) => {\n for (let i = 0; i < parsers.length; i++) {\n const result = parsers[i](text, cursor);\n if (result !== '') {\n return result;\n }\n }\n return '';\n };\n }\n function readWhitespace(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^\\s+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readNonZeroDigit(text, cursor) {\n const ch = text.substr(cursor, 1);\n return ch.match(/^[1-9]$/) ? ch : '';\n }\n function readDecimalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readSignedInteger(text, cursor) {\n const ds = readDecimalDigits(text, cursor);\n if (ds !== '') {\n return ds;\n }\n const sign = text.substr(cursor, 1);\n cursor += 1;\n if (sign !== '-' && sign !== '+') {\n return '';\n }\n const sds = readDecimalDigits(text, cursor);\n if (sds === '') {\n return '';\n }\n return sign + sds;\n }\n function readExponentPart(text, cursor) {\n const e = text.substr(cursor, 1);\n cursor += 1;\n if (e.toLowerCase() !== 'e') {\n return '';\n }\n const si = readSignedInteger(text, cursor);\n if (si === '') {\n return '';\n }\n return e + si;\n }\n function readDecimalIntegerLiteral(text, cursor) {\n const ch = text.substr(cursor, 1);\n if (ch === '0') {\n return ch;\n }\n const nzd = readNonZeroDigit(text, cursor);\n cursor += nzd.length;\n if (nzd === '') {\n return '';\n }\n return nzd + readDecimalDigits(text, cursor);\n }\n function readDecimalLiteral1(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n return dil + dot + dds + readExponentPart(text, cursor);\n }\n function readDecimalLiteral2(text, cursor) {\n const dot = text.substr(cursor, 1);\n cursor += dot.length;\n if (dot !== '.') {\n return '';\n }\n const dds = readDecimalDigits(text, cursor);\n cursor += dds.length;\n if (dds === '') {\n return '';\n }\n return dot + dds + readExponentPart(text, cursor);\n }\n function readDecimalLiteral3(text, cursor) {\n const dil = readDecimalIntegerLiteral(text, cursor);\n cursor += dil.length;\n if (dil === '') {\n return '';\n }\n return dil + readExponentPart(text, cursor);\n }\n const readDecimalLiteral = combineReader([\n readDecimalLiteral1,\n readDecimalLiteral2,\n readDecimalLiteral3,\n ]);\n function parseBinaryDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[01]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readBinaryIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0b') {\n return '';\n }\n const bds = parseBinaryDigits(text, cursor);\n if (bds === '') {\n return '';\n }\n return prefix + bds;\n }\n function readOctalDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-7]+/);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readOctalIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0o') {\n return '';\n }\n const ods = readOctalDigits(text, cursor);\n if (ods === '') {\n return '';\n }\n return prefix + ods;\n }\n function readHexDigits(text, cursor) {\n var _a;\n const m = text.substr(cursor).match(/^[0-9a-f]+/i);\n return (_a = (m && m[0])) !== null && _a !== void 0 ? _a : '';\n }\n function readHexIntegerLiteral(text, cursor) {\n const prefix = text.substr(cursor, 2);\n cursor += prefix.length;\n if (prefix.toLowerCase() !== '0x') {\n return '';\n }\n const hds = readHexDigits(text, cursor);\n if (hds === '') {\n return '';\n }\n return prefix + hds;\n }\n const readNonDecimalIntegerLiteral = combineReader([\n readBinaryIntegerLiteral,\n readOctalIntegerLiteral,\n readHexIntegerLiteral,\n ]);\n const readNumericLiteral = combineReader([\n readNonDecimalIntegerLiteral,\n readDecimalLiteral,\n ]);\n\n function parseLiteral(text, cursor) {\n const num = readNumericLiteral(text, cursor);\n cursor += num.length;\n if (num === '') {\n return null;\n }\n return {\n evaluable: new NumberLiteralNode(num),\n cursor: cursor,\n };\n }\n function parseParenthesizedExpression(text, cursor) {\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '(') {\n return null;\n }\n const expr = parseExpression(text, cursor);\n if (!expr) {\n return null;\n }\n cursor = expr.cursor;\n cursor += readWhitespace(text, cursor).length;\n const cl = text.substr(cursor, 1);\n cursor += cl.length;\n if (cl !== ')') {\n return null;\n }\n return {\n evaluable: expr.evaluable,\n cursor: cursor,\n };\n }\n function parsePrimaryExpression(text, cursor) {\n return (parseLiteral(text, cursor) || parseParenthesizedExpression(text, cursor));\n }\n function parseUnaryExpression(text, cursor) {\n const expr = parsePrimaryExpression(text, cursor);\n if (expr) {\n return expr;\n }\n const op = text.substr(cursor, 1);\n cursor += op.length;\n if (op !== '+' && op !== '-' && op !== '~') {\n return null;\n }\n const num = parseUnaryExpression(text, cursor);\n if (!num) {\n return null;\n }\n cursor = num.cursor;\n return {\n cursor: cursor,\n evaluable: new UnaryOperationNode(op, num.evaluable),\n };\n }\n function readBinaryOperator(ops, text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n const op = ops.filter((op) => text.startsWith(op, cursor))[0];\n if (!op) {\n return null;\n }\n cursor += op.length;\n cursor += readWhitespace(text, cursor).length;\n return {\n cursor: cursor,\n operator: op,\n };\n }\n function createBinaryOperationExpressionParser(exprParser, ops) {\n return (text, cursor) => {\n const firstExpr = exprParser(text, cursor);\n if (!firstExpr) {\n return null;\n }\n cursor = firstExpr.cursor;\n let expr = firstExpr.evaluable;\n for (;;) {\n const op = readBinaryOperator(ops, text, cursor);\n if (!op) {\n break;\n }\n cursor = op.cursor;\n const nextExpr = exprParser(text, cursor);\n if (!nextExpr) {\n return null;\n }\n cursor = nextExpr.cursor;\n expr = new BinaryOperationNode(op.operator, expr, nextExpr.evaluable);\n }\n return expr\n ? {\n cursor: cursor,\n evaluable: expr,\n }\n : null;\n };\n }\n const parseBinaryOperationExpression = [\n ['**'],\n ['*', '/', '%'],\n ['+', '-'],\n ['<<', '>>>', '>>'],\n ['&'],\n ['^'],\n ['|'],\n ].reduce((parser, ops) => {\n return createBinaryOperationExpressionParser(parser, ops);\n }, parseUnaryExpression);\n function parseExpression(text, cursor) {\n cursor += readWhitespace(text, cursor).length;\n return parseBinaryOperationExpression(text, cursor);\n }\n function parseEcmaNumberExpression(text) {\n const expr = parseExpression(text, 0);\n if (!expr) {\n return null;\n }\n const cursor = expr.cursor + readWhitespace(text, expr.cursor).length;\n if (cursor !== text.length) {\n return null;\n }\n return expr.evaluable;\n }\n\n function parseNumber(text) {\n var _a;\n const r = parseEcmaNumberExpression(text);\n return (_a = r === null || r === void 0 ? void 0 : r.evaluate()) !== null && _a !== void 0 ? _a : null;\n }\n function numberFromUnknown(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const pv = parseNumber(value);\n if (!isEmpty(pv)) {\n return pv;\n }\n }\n return 0;\n }\n function numberToString(value) {\n return String(value);\n }\n function createNumberFormatter(digits) {\n return (value) => {\n return value.toFixed(Math.max(Math.min(digits, 20), 0));\n };\n }\n\n const innerFormatter = createNumberFormatter(0);\n function formatPercentage(value) {\n return innerFormatter(value) + '%';\n }\n\n function stringFromUnknown(value) {\n return String(value);\n }\n function formatString(value) {\n return value;\n }\n\n function fillBuffer(buffer, bufferSize) {\n while (buffer.length < bufferSize) {\n buffer.push(undefined);\n }\n }\n function initializeBuffer(bufferSize) {\n const buffer = [];\n fillBuffer(buffer, bufferSize);\n return createValue(buffer);\n }\n function createTrimmedBuffer(buffer) {\n const index = buffer.indexOf(undefined);\n return forceCast(index < 0 ? buffer : buffer.slice(0, index));\n }\n function createPushedBuffer(buffer, newValue) {\n const newBuffer = [...createTrimmedBuffer(buffer), newValue];\n if (newBuffer.length > buffer.length) {\n newBuffer.splice(0, newBuffer.length - buffer.length);\n }\n else {\n fillBuffer(newBuffer, buffer.length);\n }\n return newBuffer;\n }\n\n function connectValues({ primary, secondary, forward, backward, }) {\n let changing = false;\n function preventFeedback(callback) {\n if (changing) {\n return;\n }\n changing = true;\n callback();\n changing = false;\n }\n primary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), ev.options);\n });\n });\n secondary.emitter.on('change', (ev) => {\n preventFeedback(() => {\n primary.setRawValue(backward(primary, secondary), ev.options);\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), ev.options);\n });\n });\n preventFeedback(() => {\n secondary.setRawValue(forward(primary, secondary), {\n forceEmit: false,\n last: true,\n });\n });\n }\n\n function getStepForKey(baseStep, keys) {\n const step = baseStep * (keys.altKey ? 0.1 : 1) * (keys.shiftKey ? 10 : 1);\n if (keys.upKey) {\n return +step;\n }\n else if (keys.downKey) {\n return -step;\n }\n return 0;\n }\n function getVerticalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowDown',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowUp',\n };\n }\n function getHorizontalStepKeys(ev) {\n return {\n altKey: ev.altKey,\n downKey: ev.key === 'ArrowLeft',\n shiftKey: ev.shiftKey,\n upKey: ev.key === 'ArrowRight',\n };\n }\n function isVerticalArrowKey(key) {\n return key === 'ArrowUp' || key === 'ArrowDown';\n }\n function isArrowKey(key) {\n return isVerticalArrowKey(key) || key === 'ArrowLeft' || key === 'ArrowRight';\n }\n\n function computeOffset$1(ev, elem) {\n const win = elem.ownerDocument.defaultView;\n const rect = elem.getBoundingClientRect();\n return {\n x: ev.pageX - (((win && win.scrollX) || 0) + rect.left),\n y: ev.pageY - (((win && win.scrollY) || 0) + rect.top),\n };\n }\n class PointerHandler {\n constructor(element) {\n this.lastTouch_ = null;\n this.onDocumentMouseMove_ = this.onDocumentMouseMove_.bind(this);\n this.onDocumentMouseUp_ = this.onDocumentMouseUp_.bind(this);\n this.onMouseDown_ = this.onMouseDown_.bind(this);\n this.onTouchEnd_ = this.onTouchEnd_.bind(this);\n this.onTouchMove_ = this.onTouchMove_.bind(this);\n this.onTouchStart_ = this.onTouchStart_.bind(this);\n this.elem_ = element;\n this.emitter = new Emitter();\n element.addEventListener('touchstart', this.onTouchStart_, {\n passive: false,\n });\n element.addEventListener('touchmove', this.onTouchMove_, {\n passive: true,\n });\n element.addEventListener('touchend', this.onTouchEnd_);\n element.addEventListener('mousedown', this.onMouseDown_);\n }\n computePosition_(offset) {\n const rect = this.elem_.getBoundingClientRect();\n return {\n bounds: {\n width: rect.width,\n height: rect.height,\n },\n point: offset\n ? {\n x: offset.x,\n y: offset.y,\n }\n : null,\n };\n }\n onMouseDown_(ev) {\n var _a;\n ev.preventDefault();\n (_a = ev.currentTarget) === null || _a === void 0 ? void 0 : _a.focus();\n const doc = this.elem_.ownerDocument;\n doc.addEventListener('mousemove', this.onDocumentMouseMove_);\n doc.addEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseMove_(ev) {\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onDocumentMouseUp_(ev) {\n const doc = this.elem_.ownerDocument;\n doc.removeEventListener('mousemove', this.onDocumentMouseMove_);\n doc.removeEventListener('mouseup', this.onDocumentMouseUp_);\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(computeOffset$1(ev, this.elem_)),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n onTouchStart_(ev) {\n ev.preventDefault();\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('down', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchMove_(ev) {\n const touch = ev.targetTouches.item(0);\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('move', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n this.lastTouch_ = touch;\n }\n onTouchEnd_(ev) {\n var _a;\n const touch = (_a = ev.targetTouches.item(0)) !== null && _a !== void 0 ? _a : this.lastTouch_;\n const rect = this.elem_.getBoundingClientRect();\n this.emitter.emit('up', {\n altKey: ev.altKey,\n data: this.computePosition_(touch\n ? {\n x: touch.clientX - rect.left,\n y: touch.clientY - rect.top,\n }\n : undefined),\n sender: this,\n shiftKey: ev.shiftKey,\n });\n }\n }\n\n function mapRange(value, start1, end1, start2, end2) {\n const p = (value - start1) / (end1 - start1);\n return start2 + p * (end2 - start2);\n }\n function getDecimalDigits(value) {\n const text = String(value.toFixed(10));\n const frac = text.split('.')[1];\n return frac.replace(/0+$/, '').length;\n }\n function constrainRange(value, min, max) {\n return Math.min(Math.max(value, min), max);\n }\n function loopRange(value, max) {\n return ((value % max) + max) % max;\n }\n\n const className$g = ClassName('txt');\n class NumberTextView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$g(), className$g(undefined, 'num'));\n if (config.arrayPosition) {\n this.element.classList.add(className$g(undefined, config.arrayPosition));\n }\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$g('i'));\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n this.onDraggingChange_ = this.onDraggingChange_.bind(this);\n this.dragging_ = config.dragging;\n this.dragging_.emitter.on('change', this.onDraggingChange_);\n this.element.classList.add(className$g());\n this.inputElement.classList.add(className$g('i'));\n const knobElem = doc.createElement('div');\n knobElem.classList.add(className$g('k'));\n this.element.appendChild(knobElem);\n this.knobElement = knobElem;\n const guideElem = doc.createElementNS(SVG_NS, 'svg');\n guideElem.classList.add(className$g('g'));\n this.knobElement.appendChild(guideElem);\n const bodyElem = doc.createElementNS(SVG_NS, 'path');\n bodyElem.classList.add(className$g('gb'));\n guideElem.appendChild(bodyElem);\n this.guideBodyElem_ = bodyElem;\n const headElem = doc.createElementNS(SVG_NS, 'path');\n headElem.classList.add(className$g('gh'));\n guideElem.appendChild(headElem);\n this.guideHeadElem_ = headElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(ClassName('tt')());\n this.knobElement.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.refresh();\n }\n onDraggingChange_(ev) {\n if (ev.rawValue === null) {\n this.element.classList.remove(className$g(undefined, 'drg'));\n return;\n }\n this.element.classList.add(className$g(undefined, 'drg'));\n const x = ev.rawValue / this.props_.get('draggingScale');\n const aox = x + (x > 0 ? -1 : x < 0 ? +1 : 0);\n const adx = constrainRange(-aox, -4, +4);\n this.guideHeadElem_.setAttributeNS(null, 'd', [`M ${aox + adx},0 L${aox},4 L${aox + adx},8`, `M ${x},-1 L${x},9`].join(' '));\n this.guideBodyElem_.setAttributeNS(null, 'd', `M 0,4 L${x},4`);\n const formatter = this.props_.get('formatter');\n this.tooltipElem_.textContent = formatter(this.value.rawValue);\n this.tooltipElem_.style.left = `${x}px`;\n }\n refresh() {\n const formatter = this.props_.get('formatter');\n this.inputElement.value = formatter(this.value.rawValue);\n }\n onChange_() {\n this.refresh();\n }\n }\n\n class NumberTextController {\n constructor(doc, config) {\n this.originRawValue_ = 0;\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.onInputKeyDown_ = this.onInputKeyDown_.bind(this);\n this.onInputKeyUp_ = this.onInputKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.baseStep_ = config.baseStep;\n this.parser_ = config.parser;\n this.props = config.props;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.dragging_ = createValue(null);\n this.view = new NumberTextView(doc, {\n arrayPosition: config.arrayPosition,\n dragging: this.dragging_,\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n this.view.inputElement.addEventListener('keydown', this.onInputKeyDown_);\n this.view.inputElement.addEventListener('keyup', this.onInputKeyUp_);\n const ph = new PointerHandler(this.view.knobElement);\n ph.emitter.on('down', this.onPointerDown_);\n ph.emitter.on('move', this.onPointerMove_);\n ph.emitter.on('up', this.onPointerUp_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n const value = inputElem.value;\n const parsedValue = this.parser_(value);\n if (!isEmpty(parsedValue)) {\n this.value.rawValue = parsedValue;\n }\n this.view.refresh();\n }\n onInputKeyDown_(ev) {\n const step = getStepForKey(this.baseStep_, getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onInputKeyUp_(ev) {\n const step = getStepForKey(this.baseStep_, getVerticalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n onPointerDown_() {\n this.originRawValue_ = this.value.rawValue;\n this.dragging_.rawValue = 0;\n }\n computeDraggingValue_(data) {\n if (!data.point) {\n return null;\n }\n const dx = data.point.x - data.bounds.width / 2;\n return this.originRawValue_ + dx * this.props.get('draggingScale');\n }\n onPointerMove_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: false,\n last: false,\n });\n this.dragging_.rawValue = this.value.rawValue - this.originRawValue_;\n }\n onPointerUp_(ev) {\n const v = this.computeDraggingValue_(ev.data);\n if (v === null) {\n return;\n }\n this.value.setRawValue(v, {\n forceEmit: true,\n last: true,\n });\n this.dragging_.rawValue = null;\n }\n }\n\n const className$f = ClassName('sld');\n class SliderView {\n constructor(doc, config) {\n this.onChange_ = this.onChange_.bind(this);\n this.props_ = config.props;\n this.props_.emitter.on('change', this.onChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$f());\n config.viewProps.bindClassModifiers(this.element);\n const trackElem = doc.createElement('div');\n trackElem.classList.add(className$f('t'));\n config.viewProps.bindTabIndex(trackElem);\n this.element.appendChild(trackElem);\n this.trackElement = trackElem;\n const knobElem = doc.createElement('div');\n knobElem.classList.add(className$f('k'));\n this.trackElement.appendChild(knobElem);\n this.knobElement = knobElem;\n config.value.emitter.on('change', this.onChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const p = constrainRange(mapRange(this.value.rawValue, this.props_.get('minValue'), this.props_.get('maxValue'), 0, 100), 0, 100);\n this.knobElement.style.width = `${p}%`;\n }\n onChange_() {\n this.update_();\n }\n }\n\n class SliderController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDownOrMove_ = this.onPointerDownOrMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.baseStep_ = config.baseStep;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.props = config.props;\n this.view = new SliderView(doc, {\n props: this.props,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.trackElement);\n this.ptHandler_.emitter.on('down', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('move', this.onPointerDownOrMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.trackElement.addEventListener('keydown', this.onKeyDown_);\n this.view.trackElement.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n this.value.setRawValue(mapRange(constrainRange(d.point.x, 0, d.bounds.width), 0, d.bounds.width, this.props.get('minValue'), this.props.get('maxValue')), opts);\n }\n onPointerDownOrMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(this.baseStep_, getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue + step, {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(this.baseStep_, getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$e = ClassName('sldtxt');\n class SliderTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$e());\n const sliderElem = doc.createElement('div');\n sliderElem.classList.add(className$e('s'));\n this.sliderView_ = config.sliderView;\n sliderElem.appendChild(this.sliderView_.element);\n this.element.appendChild(sliderElem);\n const textElem = doc.createElement('div');\n textElem.classList.add(className$e('t'));\n this.textView_ = config.textView;\n textElem.appendChild(this.textView_.element);\n this.element.appendChild(textElem);\n }\n }\n\n class SliderTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.sliderC_ = new SliderController(doc, {\n baseStep: config.baseStep,\n props: config.sliderProps,\n value: config.value,\n viewProps: this.viewProps,\n });\n this.textC_ = new NumberTextController(doc, {\n baseStep: config.baseStep,\n parser: config.parser,\n props: config.textProps,\n value: config.value,\n viewProps: config.viewProps,\n });\n this.view = new SliderTextView(doc, {\n sliderView: this.sliderC_.view,\n textView: this.textC_.view,\n });\n }\n get sliderController() {\n return this.sliderC_;\n }\n get textController() {\n return this.textC_;\n }\n }\n\n function writePrimitive(target, value) {\n target.write(value);\n }\n\n function parseListOptions(value) {\n const p = ParamsParsers;\n if (Array.isArray(value)) {\n return p.required.array(p.required.object({\n text: p.required.string,\n value: p.required.raw,\n }))(value).value;\n }\n if (typeof value === 'object') {\n return p.required.raw(value)\n .value;\n }\n return undefined;\n }\n function parsePickerLayout(value) {\n if (value === 'inline' || value === 'popup') {\n return value;\n }\n return undefined;\n }\n function parsePointDimensionParams(value) {\n const p = ParamsParsers;\n return p.required.object({\n max: p.optional.number,\n min: p.optional.number,\n step: p.optional.number,\n })(value).value;\n }\n function normalizeListOptions(options) {\n if (Array.isArray(options)) {\n return options;\n }\n const items = [];\n Object.keys(options).forEach((text) => {\n items.push({ text: text, value: options[text] });\n });\n return items;\n }\n function createListConstraint(options) {\n return !isEmpty(options)\n ? new ListConstraint(normalizeListOptions(forceCast(options)))\n : null;\n }\n function findListItems(constraint) {\n const c = constraint\n ? findConstraint(constraint, ListConstraint)\n : null;\n if (!c) {\n return null;\n }\n return c.options;\n }\n function findStep(constraint) {\n const c = constraint ? findConstraint(constraint, StepConstraint) : null;\n if (!c) {\n return null;\n }\n return c.step;\n }\n function getSuitableDecimalDigits(constraint, rawValue) {\n const sc = constraint && findConstraint(constraint, StepConstraint);\n if (sc) {\n return getDecimalDigits(sc.step);\n }\n return Math.max(getDecimalDigits(rawValue), 2);\n }\n function getBaseStep(constraint) {\n const step = findStep(constraint);\n return step !== null && step !== void 0 ? step : 1;\n }\n function getSuitableDraggingScale(constraint, rawValue) {\n var _a;\n const sc = constraint && findConstraint(constraint, StepConstraint);\n const base = Math.abs((_a = sc === null || sc === void 0 ? void 0 : sc.step) !== null && _a !== void 0 ? _a : rawValue);\n return base === 0 ? 0.1 : Math.pow(10, Math.floor(Math.log10(base)) - 1);\n }\n\n const className$d = ClassName('ckb');\n class CheckboxView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className$d());\n config.viewProps.bindClassModifiers(this.element);\n const labelElem = doc.createElement('label');\n labelElem.classList.add(className$d('l'));\n this.element.appendChild(labelElem);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$d('i'));\n inputElem.type = 'checkbox';\n labelElem.appendChild(inputElem);\n this.inputElement = inputElem;\n config.viewProps.bindDisabled(this.inputElement);\n const wrapperElem = doc.createElement('div');\n wrapperElem.classList.add(className$d('w'));\n labelElem.appendChild(wrapperElem);\n const markElem = createSvgIconElement(doc, 'check');\n wrapperElem.appendChild(markElem);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n this.inputElement.checked = this.value.rawValue;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class CheckboxController {\n constructor(doc, config) {\n this.onInputChange_ = this.onInputChange_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new CheckboxView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view.inputElement.addEventListener('change', this.onInputChange_);\n }\n onInputChange_(e) {\n const inputElem = forceCast(e.currentTarget);\n this.value.rawValue = inputElem.checked;\n }\n }\n\n function createConstraint$5(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n const BooleanInputPlugin = {\n id: 'input-bool',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.optional.custom(parseListOptions),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n constraint: (args) => createConstraint$5(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(doc, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new CheckboxController(doc, {\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const className$c = ClassName('col');\n class ColorView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$c());\n config.foldable.bindExpandedClass(this.element, className$c(undefined, 'expanded'));\n bindValueMap(config.foldable, 'completed', valueToClassName(this.element, className$c(undefined, 'cpl')));\n const headElem = doc.createElement('div');\n headElem.classList.add(className$c('h'));\n this.element.appendChild(headElem);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(className$c('s'));\n headElem.appendChild(swatchElem);\n this.swatchElement = swatchElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$c('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(className$c('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n }\n\n function rgbToHsl(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const c = cmax - cmin;\n let h = 0;\n let s = 0;\n const l = (cmin + cmax) / 2;\n if (c !== 0) {\n s = c / (1 - Math.abs(cmax + cmin - 1));\n if (rp === cmax) {\n h = (gp - bp) / c;\n }\n else if (gp === cmax) {\n h = 2 + (bp - rp) / c;\n }\n else {\n h = 4 + (rp - gp) / c;\n }\n h = h / 6 + (h < 0 ? 1 : 0);\n }\n return [h * 360, s * 100, l * 100];\n }\n function hslToRgb(h, s, l) {\n const hp = ((h % 360) + 360) % 360;\n const sp = constrainRange(s / 100, 0, 1);\n const lp = constrainRange(l / 100, 0, 1);\n const c = (1 - Math.abs(2 * lp - 1)) * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = lp - c / 2;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n }\n function rgbToHsv(r, g, b) {\n const rp = constrainRange(r / 255, 0, 1);\n const gp = constrainRange(g / 255, 0, 1);\n const bp = constrainRange(b / 255, 0, 1);\n const cmax = Math.max(rp, gp, bp);\n const cmin = Math.min(rp, gp, bp);\n const d = cmax - cmin;\n let h;\n if (d === 0) {\n h = 0;\n }\n else if (cmax === rp) {\n h = 60 * (((((gp - bp) / d) % 6) + 6) % 6);\n }\n else if (cmax === gp) {\n h = 60 * ((bp - rp) / d + 2);\n }\n else {\n h = 60 * ((rp - gp) / d + 4);\n }\n const s = cmax === 0 ? 0 : d / cmax;\n const v = cmax;\n return [h, s * 100, v * 100];\n }\n function hsvToRgb(h, s, v) {\n const hp = loopRange(h, 360);\n const sp = constrainRange(s / 100, 0, 1);\n const vp = constrainRange(v / 100, 0, 1);\n const c = vp * sp;\n const x = c * (1 - Math.abs(((hp / 60) % 2) - 1));\n const m = vp - c;\n let rp, gp, bp;\n if (hp >= 0 && hp < 60) {\n [rp, gp, bp] = [c, x, 0];\n }\n else if (hp >= 60 && hp < 120) {\n [rp, gp, bp] = [x, c, 0];\n }\n else if (hp >= 120 && hp < 180) {\n [rp, gp, bp] = [0, c, x];\n }\n else if (hp >= 180 && hp < 240) {\n [rp, gp, bp] = [0, x, c];\n }\n else if (hp >= 240 && hp < 300) {\n [rp, gp, bp] = [x, 0, c];\n }\n else {\n [rp, gp, bp] = [c, 0, x];\n }\n return [(rp + m) * 255, (gp + m) * 255, (bp + m) * 255];\n }\n function hslToHsv(h, s, l) {\n const sd = l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100);\n return [\n h,\n sd !== 0 ? (s * (100 - Math.abs(2 * l - 100))) / sd : 0,\n l + (s * (100 - Math.abs(2 * l - 100))) / (2 * 100),\n ];\n }\n function hsvToHsl(h, s, v) {\n const sd = 100 - Math.abs((v * (200 - s)) / 100 - 100);\n return [h, sd !== 0 ? (s * v) / sd : 0, (v * (200 - s)) / (2 * 100)];\n }\n function removeAlphaComponent(comps) {\n return [comps[0], comps[1], comps[2]];\n }\n function appendAlphaComponent(comps, alpha) {\n return [comps[0], comps[1], comps[2], alpha];\n }\n const MODE_CONVERTER_MAP = {\n hsl: {\n hsl: (h, s, l) => [h, s, l],\n hsv: hslToHsv,\n rgb: hslToRgb,\n },\n hsv: {\n hsl: hsvToHsl,\n hsv: (h, s, v) => [h, s, v],\n rgb: hsvToRgb,\n },\n rgb: {\n hsl: rgbToHsl,\n hsv: rgbToHsv,\n rgb: (r, g, b) => [r, g, b],\n },\n };\n function convertColorMode(components, fromMode, toMode) {\n return MODE_CONVERTER_MAP[fromMode][toMode](...components);\n }\n\n const CONSTRAINT_MAP = {\n hsl: (comps) => {\n var _a;\n return [\n loopRange(comps[0], 360),\n constrainRange(comps[1], 0, 100),\n constrainRange(comps[2], 0, 100),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n hsv: (comps) => {\n var _a;\n return [\n loopRange(comps[0], 360),\n constrainRange(comps[1], 0, 100),\n constrainRange(comps[2], 0, 100),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n rgb: (comps) => {\n var _a;\n return [\n constrainRange(comps[0], 0, 255),\n constrainRange(comps[1], 0, 255),\n constrainRange(comps[2], 0, 255),\n constrainRange((_a = comps[3]) !== null && _a !== void 0 ? _a : 1, 0, 1),\n ];\n },\n };\n function isRgbColorComponent(obj, key) {\n if (typeof obj !== 'object' || isEmpty(obj)) {\n return false;\n }\n return key in obj && typeof obj[key] === 'number';\n }\n class Color {\n constructor(comps, mode) {\n this.mode_ = mode;\n this.comps_ = CONSTRAINT_MAP[mode](comps);\n }\n static black() {\n return new Color([0, 0, 0], 'rgb');\n }\n static fromObject(obj) {\n const comps = 'a' in obj ? [obj.r, obj.g, obj.b, obj.a] : [obj.r, obj.g, obj.b];\n return new Color(comps, 'rgb');\n }\n static toRgbaObject(color) {\n return color.toRgbaObject();\n }\n static isRgbColorObject(obj) {\n return (isRgbColorComponent(obj, 'r') &&\n isRgbColorComponent(obj, 'g') &&\n isRgbColorComponent(obj, 'b'));\n }\n static isRgbaColorObject(obj) {\n return this.isRgbColorObject(obj) && isRgbColorComponent(obj, 'a');\n }\n static isColorObject(obj) {\n return this.isRgbColorObject(obj);\n }\n static equals(v1, v2) {\n if (v1.mode_ !== v2.mode_) {\n return false;\n }\n const comps1 = v1.comps_;\n const comps2 = v2.comps_;\n for (let i = 0; i < comps1.length; i++) {\n if (comps1[i] !== comps2[i]) {\n return false;\n }\n }\n return true;\n }\n get mode() {\n return this.mode_;\n }\n getComponents(opt_mode) {\n return appendAlphaComponent(convertColorMode(removeAlphaComponent(this.comps_), this.mode_, opt_mode || this.mode_), this.comps_[3]);\n }\n toRgbaObject() {\n const rgbComps = this.getComponents('rgb');\n return {\n r: rgbComps[0],\n g: rgbComps[1],\n b: rgbComps[2],\n a: rgbComps[3],\n };\n }\n }\n\n const className$b = ClassName('colp');\n class ColorPickerView {\n constructor(doc, config) {\n this.alphaViews_ = null;\n this.element = doc.createElement('div');\n this.element.classList.add(className$b());\n const hsvElem = doc.createElement('div');\n hsvElem.classList.add(className$b('hsv'));\n const svElem = doc.createElement('div');\n svElem.classList.add(className$b('sv'));\n this.svPaletteView_ = config.svPaletteView;\n svElem.appendChild(this.svPaletteView_.element);\n hsvElem.appendChild(svElem);\n const hElem = doc.createElement('div');\n hElem.classList.add(className$b('h'));\n this.hPaletteView_ = config.hPaletteView;\n hElem.appendChild(this.hPaletteView_.element);\n hsvElem.appendChild(hElem);\n this.element.appendChild(hsvElem);\n const rgbElem = doc.createElement('div');\n rgbElem.classList.add(className$b('rgb'));\n this.textView_ = config.textView;\n rgbElem.appendChild(this.textView_.element);\n this.element.appendChild(rgbElem);\n if (config.alphaViews) {\n this.alphaViews_ = {\n palette: config.alphaViews.palette,\n text: config.alphaViews.text,\n };\n const aElem = doc.createElement('div');\n aElem.classList.add(className$b('a'));\n const apElem = doc.createElement('div');\n apElem.classList.add(className$b('ap'));\n apElem.appendChild(this.alphaViews_.palette.element);\n aElem.appendChild(apElem);\n const atElem = doc.createElement('div');\n atElem.classList.add(className$b('at'));\n atElem.appendChild(this.alphaViews_.text.element);\n aElem.appendChild(atElem);\n this.element.appendChild(aElem);\n }\n }\n get allFocusableElements() {\n const elems = [\n this.svPaletteView_.element,\n this.hPaletteView_.element,\n this.textView_.modeSelectElement,\n ...this.textView_.textViews.map((v) => v.inputElement),\n ];\n if (this.alphaViews_) {\n elems.push(this.alphaViews_.palette.element, this.alphaViews_.text.inputElement);\n }\n return elems;\n }\n }\n\n function parseColorInputParams(params) {\n const p = ParamsParsers;\n return parseParams(params, {\n alpha: p.optional.boolean,\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n });\n }\n function getBaseStepForColor(forAlpha) {\n return forAlpha ? 0.1 : 1;\n }\n\n function parseCssNumberOrPercentage(text, maxValue) {\n const m = text.match(/^(.+)%$/);\n if (!m) {\n return Math.min(parseFloat(text), maxValue);\n }\n return Math.min(parseFloat(m[1]) * 0.01 * maxValue, maxValue);\n }\n const ANGLE_TO_DEG_MAP = {\n deg: (angle) => angle,\n grad: (angle) => (angle * 360) / 400,\n rad: (angle) => (angle * 360) / (2 * Math.PI),\n turn: (angle) => angle * 360,\n };\n function parseCssNumberOrAngle(text) {\n const m = text.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);\n if (!m) {\n return parseFloat(text);\n }\n const angle = parseFloat(m[1]);\n const unit = m[2];\n return ANGLE_TO_DEG_MAP[unit](angle);\n }\n const NOTATION_TO_PARSER_MAP = {\n 'func.rgb': (text) => {\n const m = text.match(/^rgb\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return new Color(comps, 'rgb');\n },\n 'func.rgba': (text) => {\n const m = text.match(/^rgba\\(\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrPercentage(m[1], 255),\n parseCssNumberOrPercentage(m[2], 255),\n parseCssNumberOrPercentage(m[3], 255),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return new Color(comps, 'rgb');\n },\n 'func.hsl': (text) => {\n const m = text.match(/^hsl\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n ];\n if (isNaN(comps[0]) || isNaN(comps[1]) || isNaN(comps[2])) {\n return null;\n }\n return new Color(comps, 'hsl');\n },\n 'func.hsla': (text) => {\n const m = text.match(/^hsla\\(\\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*,\\s*([0-9A-Fa-f.]+%?)\\s*\\)$/);\n if (!m) {\n return null;\n }\n const comps = [\n parseCssNumberOrAngle(m[1]),\n parseCssNumberOrPercentage(m[2], 100),\n parseCssNumberOrPercentage(m[3], 100),\n parseCssNumberOrPercentage(m[4], 1),\n ];\n if (isNaN(comps[0]) ||\n isNaN(comps[1]) ||\n isNaN(comps[2]) ||\n isNaN(comps[3])) {\n return null;\n }\n return new Color(comps, 'hsl');\n },\n 'hex.rgb': (text) => {\n const mRgb = text.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return new Color([\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n ], 'rgb');\n }\n const mRrggbb = text.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return new Color([\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n ], 'rgb');\n }\n return null;\n },\n 'hex.rgba': (text) => {\n const mRgb = text.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);\n if (mRgb) {\n return new Color([\n parseInt(mRgb[1] + mRgb[1], 16),\n parseInt(mRgb[2] + mRgb[2], 16),\n parseInt(mRgb[3] + mRgb[3], 16),\n mapRange(parseInt(mRgb[4] + mRgb[4], 16), 0, 255, 0, 1),\n ], 'rgb');\n }\n const mRrggbb = text.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);\n if (mRrggbb) {\n return new Color([\n parseInt(mRrggbb[1], 16),\n parseInt(mRrggbb[2], 16),\n parseInt(mRrggbb[3], 16),\n mapRange(parseInt(mRrggbb[4], 16), 0, 255, 0, 1),\n ], 'rgb');\n }\n return null;\n },\n };\n function getColorNotation(text) {\n const notations = Object.keys(NOTATION_TO_PARSER_MAP);\n return notations.reduce((result, notation) => {\n if (result) {\n return result;\n }\n const subparser = NOTATION_TO_PARSER_MAP[notation];\n return subparser(text) ? notation : null;\n }, null);\n }\n const CompositeColorParser = (text) => {\n const notation = getColorNotation(text);\n return notation ? NOTATION_TO_PARSER_MAP[notation](text) : null;\n };\n function hasAlphaComponent(notation) {\n return (notation === 'func.hsla' ||\n notation === 'func.rgba' ||\n notation === 'hex.rgba');\n }\n function colorFromString(value) {\n if (typeof value === 'string') {\n const cv = CompositeColorParser(value);\n if (cv) {\n return cv;\n }\n }\n return Color.black();\n }\n function zerofill(comp) {\n const hex = constrainRange(Math.floor(comp), 0, 255).toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }\n function colorToHexRgbString(value, prefix = '#') {\n const hexes = removeAlphaComponent(value.getComponents('rgb'))\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n }\n function colorToHexRgbaString(value, prefix = '#') {\n const rgbaComps = value.getComponents('rgb');\n const hexes = [rgbaComps[0], rgbaComps[1], rgbaComps[2], rgbaComps[3] * 255]\n .map(zerofill)\n .join('');\n return `${prefix}${hexes}`;\n }\n function colorToFunctionalRgbString(value) {\n const formatter = createNumberFormatter(0);\n const comps = removeAlphaComponent(value.getComponents('rgb')).map((comp) => formatter(comp));\n return `rgb(${comps.join(', ')})`;\n }\n function colorToFunctionalRgbaString(value) {\n const aFormatter = createNumberFormatter(2);\n const rgbFormatter = createNumberFormatter(0);\n const comps = value.getComponents('rgb').map((comp, index) => {\n const formatter = index === 3 ? aFormatter : rgbFormatter;\n return formatter(comp);\n });\n return `rgba(${comps.join(', ')})`;\n }\n function colorToFunctionalHslString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n ];\n const comps = removeAlphaComponent(value.getComponents('hsl')).map((comp, index) => formatters[index](comp));\n return `hsl(${comps.join(', ')})`;\n }\n function colorToFunctionalHslaString(value) {\n const formatters = [\n createNumberFormatter(0),\n formatPercentage,\n formatPercentage,\n createNumberFormatter(2),\n ];\n const comps = value\n .getComponents('hsl')\n .map((comp, index) => formatters[index](comp));\n return `hsla(${comps.join(', ')})`;\n }\n const NOTATION_TO_STRINGIFIER_MAP = {\n 'func.hsl': colorToFunctionalHslString,\n 'func.hsla': colorToFunctionalHslaString,\n 'func.rgb': colorToFunctionalRgbString,\n 'func.rgba': colorToFunctionalRgbaString,\n 'hex.rgb': colorToHexRgbString,\n 'hex.rgba': colorToHexRgbaString,\n };\n function getColorStringifier(notation) {\n return NOTATION_TO_STRINGIFIER_MAP[notation];\n }\n\n const className$a = ClassName('apl');\n class APaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$a());\n config.viewProps.bindTabIndex(this.element);\n const barElem = doc.createElement('div');\n barElem.classList.add(className$a('b'));\n this.element.appendChild(barElem);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(className$a('c'));\n barElem.appendChild(colorElem);\n this.colorElem_ = colorElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$a('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n const previewElem = doc.createElement('div');\n previewElem.classList.add(className$a('p'));\n this.markerElem_.appendChild(previewElem);\n this.previewElem_ = previewElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const rgbaComps = c.getComponents('rgb');\n const leftColor = new Color([rgbaComps[0], rgbaComps[1], rgbaComps[2], 0], 'rgb');\n const rightColor = new Color([rgbaComps[0], rgbaComps[1], rgbaComps[2], 255], 'rgb');\n const gradientComps = [\n 'to right',\n colorToFunctionalRgbaString(leftColor),\n colorToFunctionalRgbaString(rightColor),\n ];\n this.colorElem_.style.background = `linear-gradient(${gradientComps.join(',')})`;\n this.previewElem_.style.backgroundColor = colorToFunctionalRgbaString(c);\n const left = mapRange(rgbaComps[3], 0, 1, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class APaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new APaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const alpha = d.point.x / d.bounds.width;\n const c = this.value.rawValue;\n const [h, s, v] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h, s, v, alpha], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getBaseStepForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h, s, v, a + step], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getBaseStepForColor(true), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$9 = ClassName('coltxt');\n function createModeSelectElement(doc) {\n const selectElem = doc.createElement('select');\n const items = [\n { text: 'RGB', value: 'rgb' },\n { text: 'HSL', value: 'hsl' },\n { text: 'HSV', value: 'hsv' },\n ];\n selectElem.appendChild(items.reduce((frag, item) => {\n const optElem = doc.createElement('option');\n optElem.textContent = item.text;\n optElem.value = item.value;\n frag.appendChild(optElem);\n return frag;\n }, doc.createDocumentFragment()));\n return selectElem;\n }\n class ColorTextView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$9());\n const modeElem = doc.createElement('div');\n modeElem.classList.add(className$9('m'));\n this.modeElem_ = createModeSelectElement(doc);\n this.modeElem_.classList.add(className$9('ms'));\n modeElem.appendChild(this.modeSelectElement);\n const modeMarkerElem = doc.createElement('div');\n modeMarkerElem.classList.add(className$9('mm'));\n modeMarkerElem.appendChild(createSvgIconElement(doc, 'dropdown'));\n modeElem.appendChild(modeMarkerElem);\n this.element.appendChild(modeElem);\n const textsElem = doc.createElement('div');\n textsElem.classList.add(className$9('w'));\n this.element.appendChild(textsElem);\n this.textsElem_ = textsElem;\n this.textViews_ = config.textViews;\n this.applyTextViews_();\n bindValue(config.colorMode, (mode) => {\n this.modeElem_.value = mode;\n });\n }\n get modeSelectElement() {\n return this.modeElem_;\n }\n get textViews() {\n return this.textViews_;\n }\n set textViews(textViews) {\n this.textViews_ = textViews;\n this.applyTextViews_();\n }\n applyTextViews_() {\n removeChildElements(this.textsElem_);\n const doc = this.element.ownerDocument;\n this.textViews_.forEach((v) => {\n const compElem = doc.createElement('div');\n compElem.classList.add(className$9('c'));\n compElem.appendChild(v.element);\n this.textsElem_.appendChild(compElem);\n });\n }\n }\n\n const FORMATTER = createNumberFormatter(0);\n const MODE_TO_CONSTRAINT_MAP = {\n rgb: () => {\n return new RangeConstraint({ min: 0, max: 255 });\n },\n hsl: (index) => {\n return index === 0\n ? new RangeConstraint({ min: 0, max: 360 })\n : new RangeConstraint({ min: 0, max: 100 });\n },\n hsv: (index) => {\n return index === 0\n ? new RangeConstraint({ min: 0, max: 360 })\n : new RangeConstraint({ min: 0, max: 100 });\n },\n };\n function createComponentController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === 3 - 1 ? 'lst' : 'mid',\n baseStep: getBaseStepForColor(false),\n parser: config.parser,\n props: ValueMap.fromObject({\n draggingScale: 1,\n formatter: FORMATTER,\n }),\n value: createValue(0, {\n constraint: MODE_TO_CONSTRAINT_MAP[config.colorMode](index),\n }),\n viewProps: config.viewProps,\n });\n }\n class ColorTextController {\n constructor(doc, config) {\n this.onModeSelectChange_ = this.onModeSelectChange_.bind(this);\n this.parser_ = config.parser;\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.colorMode = createValue(this.value.rawValue.mode);\n this.ccs_ = this.createComponentControllers_(doc);\n this.view = new ColorTextView(doc, {\n colorMode: this.colorMode,\n textViews: [this.ccs_[0].view, this.ccs_[1].view, this.ccs_[2].view],\n });\n this.view.modeSelectElement.addEventListener('change', this.onModeSelectChange_);\n }\n createComponentControllers_(doc) {\n const cc = {\n colorMode: this.colorMode.rawValue,\n parser: this.parser_,\n viewProps: this.viewProps,\n };\n const ccs = [\n createComponentController(doc, cc, 0),\n createComponentController(doc, cc, 1),\n createComponentController(doc, cc, 2),\n ];\n ccs.forEach((cs, index) => {\n connectValues({\n primary: this.value,\n secondary: cs.value,\n forward: (p) => {\n return p.rawValue.getComponents(this.colorMode.rawValue)[index];\n },\n backward: (p, s) => {\n const pickedMode = this.colorMode.rawValue;\n const comps = p.rawValue.getComponents(pickedMode);\n comps[index] = s.rawValue;\n return new Color(appendAlphaComponent(removeAlphaComponent(comps), comps[3]), pickedMode);\n },\n });\n });\n return ccs;\n }\n onModeSelectChange_(ev) {\n const selectElem = ev.currentTarget;\n this.colorMode.rawValue = selectElem.value;\n this.ccs_ = this.createComponentControllers_(this.view.element.ownerDocument);\n this.view.textViews = [\n this.ccs_[0].view,\n this.ccs_[1].view,\n this.ccs_[2].view,\n ];\n }\n }\n\n const className$8 = ClassName('hpl');\n class HPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$8());\n config.viewProps.bindTabIndex(this.element);\n const colorElem = doc.createElement('div');\n colorElem.classList.add(className$8('c'));\n this.element.appendChild(colorElem);\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$8('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const c = this.value.rawValue;\n const [h] = c.getComponents('hsv');\n this.markerElem_.style.backgroundColor = colorToFunctionalRgbString(new Color([h, 100, 100], 'hsv'));\n const left = mapRange(h, 0, 360, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class HPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new HPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const hue = mapRange(d.point.x, 0, d.bounds.width, 0, 360);\n const c = this.value.rawValue;\n const [, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([hue, s, v, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n const step = getStepForKey(getBaseStepForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n const c = this.value.rawValue;\n const [h, s, v, a] = c.getComponents('hsv');\n this.value.setRawValue(new Color([h + step, s, v, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const step = getStepForKey(getBaseStepForColor(false), getHorizontalStepKeys(ev));\n if (step === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n const className$7 = ClassName('svp');\n const CANVAS_RESOL = 64;\n class SvPaletteView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.element = doc.createElement('div');\n this.element.classList.add(className$7());\n config.viewProps.bindTabIndex(this.element);\n const canvasElem = doc.createElement('canvas');\n canvasElem.height = CANVAS_RESOL;\n canvasElem.width = CANVAS_RESOL;\n canvasElem.classList.add(className$7('c'));\n this.element.appendChild(canvasElem);\n this.canvasElement = canvasElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$7('m'));\n this.element.appendChild(markerElem);\n this.markerElem_ = markerElem;\n this.update_();\n }\n update_() {\n const ctx = getCanvasContext(this.canvasElement);\n if (!ctx) {\n return;\n }\n const c = this.value.rawValue;\n const hsvComps = c.getComponents('hsv');\n const width = this.canvasElement.width;\n const height = this.canvasElement.height;\n const imgData = ctx.getImageData(0, 0, width, height);\n const data = imgData.data;\n for (let iy = 0; iy < height; iy++) {\n for (let ix = 0; ix < width; ix++) {\n const s = mapRange(ix, 0, width, 0, 100);\n const v = mapRange(iy, 0, height, 100, 0);\n const rgbComps = hsvToRgb(hsvComps[0], s, v);\n const i = (iy * width + ix) * 4;\n data[i] = rgbComps[0];\n data[i + 1] = rgbComps[1];\n data[i + 2] = rgbComps[2];\n data[i + 3] = 255;\n }\n }\n ctx.putImageData(imgData, 0, 0);\n const left = mapRange(hsvComps[1], 0, 100, 0, 100);\n this.markerElem_.style.left = `${left}%`;\n const top = mapRange(hsvComps[2], 0, 100, 100, 0);\n this.markerElem_.style.top = `${top}%`;\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class SvPaletteController {\n constructor(doc, config) {\n this.onKeyDown_ = this.onKeyDown_.bind(this);\n this.onKeyUp_ = this.onKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SvPaletteView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.element);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.element.addEventListener('keydown', this.onKeyDown_);\n this.view.element.addEventListener('keyup', this.onKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const saturation = mapRange(d.point.x, 0, d.bounds.width, 0, 100);\n const value = mapRange(d.point.y, 0, d.bounds.height, 100, 0);\n const [h, , , a] = this.value.rawValue.getComponents('hsv');\n this.value.setRawValue(new Color([h, saturation, value, a], 'hsv'), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [h, s, v, a] = this.value.rawValue.getComponents('hsv');\n const baseStep = getBaseStepForColor(false);\n const ds = getStepForKey(baseStep, getHorizontalStepKeys(ev));\n const dv = getStepForKey(baseStep, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(new Color([h, s + ds, v + dv, a], 'hsv'), {\n forceEmit: false,\n last: false,\n });\n }\n onKeyUp_(ev) {\n const baseStep = getBaseStepForColor(false);\n const ds = getStepForKey(baseStep, getHorizontalStepKeys(ev));\n const dv = getStepForKey(baseStep, getVerticalStepKeys(ev));\n if (ds === 0 && dv === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n class ColorPickerController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.hPaletteC_ = new HPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.svPaletteC_ = new SvPaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n this.alphaIcs_ = config.supportsAlpha\n ? {\n palette: new APaletteController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n }),\n text: new NumberTextController(doc, {\n parser: parseNumber,\n baseStep: 0.1,\n props: ValueMap.fromObject({\n draggingScale: 0.01,\n formatter: createNumberFormatter(2),\n }),\n value: createValue(0, {\n constraint: new RangeConstraint({ min: 0, max: 1 }),\n }),\n viewProps: this.viewProps,\n }),\n }\n : null;\n if (this.alphaIcs_) {\n connectValues({\n primary: this.value,\n secondary: this.alphaIcs_.text.value,\n forward: (p) => {\n return p.rawValue.getComponents()[3];\n },\n backward: (p, s) => {\n const comps = p.rawValue.getComponents();\n comps[3] = s.rawValue;\n return new Color(comps, p.rawValue.mode);\n },\n });\n }\n this.textC_ = new ColorTextController(doc, {\n parser: parseNumber,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorPickerView(doc, {\n alphaViews: this.alphaIcs_\n ? {\n palette: this.alphaIcs_.palette.view,\n text: this.alphaIcs_.text.view,\n }\n : null,\n hPaletteView: this.hPaletteC_.view,\n supportsAlpha: config.supportsAlpha,\n svPaletteView: this.svPaletteC_.view,\n textView: this.textC_.view,\n });\n }\n get textController() {\n return this.textC_;\n }\n }\n\n const className$6 = ClassName('colsw');\n class ColorSwatchView {\n constructor(doc, config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.element = doc.createElement('div');\n this.element.classList.add(className$6());\n config.viewProps.bindClassModifiers(this.element);\n const swatchElem = doc.createElement('div');\n swatchElem.classList.add(className$6('sw'));\n this.element.appendChild(swatchElem);\n this.swatchElem_ = swatchElem;\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$6('b'));\n config.viewProps.bindDisabled(buttonElem);\n this.element.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n this.update_();\n }\n update_() {\n const value = this.value.rawValue;\n this.swatchElem_.style.backgroundColor = colorToHexRgbaString(value);\n }\n onValueChange_() {\n this.update_();\n }\n }\n\n class ColorSwatchController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new ColorSwatchView(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n class ColorController {\n constructor(doc, config) {\n this.onButtonBlur_ = this.onButtonBlur_.bind(this);\n this.onButtonClick_ = this.onButtonClick_.bind(this);\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.swatchC_ = new ColorSwatchController(doc, {\n value: this.value,\n viewProps: this.viewProps,\n });\n const buttonElem = this.swatchC_.view.buttonElement;\n buttonElem.addEventListener('blur', this.onButtonBlur_);\n buttonElem.addEventListener('click', this.onButtonClick_);\n this.textC_ = new TextController(doc, {\n parser: config.parser,\n props: ValueMap.fromObject({\n formatter: config.formatter,\n }),\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new ColorView(doc, {\n foldable: this.foldable_,\n pickerLayout: config.pickerLayout,\n });\n this.view.swatchElement.appendChild(this.swatchC_.view.element);\n this.view.textElement.appendChild(this.textC_.view.element);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const pickerC = new ColorPickerController(doc, {\n supportsAlpha: config.supportsAlpha,\n value: this.value,\n viewProps: this.viewProps,\n });\n pickerC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = pickerC;\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(pickerC.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p.rawValue,\n backward: (_, s) => s.rawValue,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n get textController() {\n return this.textC_;\n }\n onButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.swatchC_.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.swatchC_.view.buttonElement.focus();\n }\n }\n }\n }\n\n function colorFromObject(value) {\n if (Color.isColorObject(value)) {\n return Color.fromObject(value);\n }\n return Color.black();\n }\n function colorToRgbNumber(value) {\n return removeAlphaComponent(value.getComponents('rgb')).reduce((result, comp) => {\n return (result << 8) | (Math.floor(comp) & 0xff);\n }, 0);\n }\n function colorToRgbaNumber(value) {\n return (value.getComponents('rgb').reduce((result, comp, index) => {\n const hex = Math.floor(index === 3 ? comp * 255 : comp) & 0xff;\n return (result << 8) | hex;\n }, 0) >>> 0);\n }\n function numberToRgbColor(num) {\n return new Color([(num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff], 'rgb');\n }\n function numberToRgbaColor(num) {\n return new Color([\n (num >> 24) & 0xff,\n (num >> 16) & 0xff,\n (num >> 8) & 0xff,\n mapRange(num & 0xff, 0, 255, 0, 1),\n ], 'rgb');\n }\n function colorFromRgbNumber(value) {\n if (typeof value !== 'number') {\n return Color.black();\n }\n return numberToRgbColor(value);\n }\n function colorFromRgbaNumber(value) {\n if (typeof value !== 'number') {\n return Color.black();\n }\n return numberToRgbaColor(value);\n }\n\n function createColorStringWriter(notation) {\n const stringify = getColorStringifier(notation);\n return (target, value) => {\n writePrimitive(target, stringify(value));\n };\n }\n function createColorNumberWriter(supportsAlpha) {\n const colorToNumber = supportsAlpha ? colorToRgbaNumber : colorToRgbNumber;\n return (target, value) => {\n writePrimitive(target, colorToNumber(value));\n };\n }\n function writeRgbaColorObject(target, value) {\n const obj = value.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n target.writeProperty('a', obj.a);\n }\n function writeRgbColorObject(target, value) {\n const obj = value.toRgbaObject();\n target.writeProperty('r', obj.r);\n target.writeProperty('g', obj.g);\n target.writeProperty('b', obj.b);\n }\n function createColorObjectWriter(supportsAlpha) {\n return supportsAlpha ? writeRgbaColorObject : writeRgbColorObject;\n }\n\n function shouldSupportAlpha$1(inputParams) {\n return 'alpha' in inputParams && inputParams.alpha === true;\n }\n function createFormatter$1(supportsAlpha) {\n return supportsAlpha\n ? (v) => colorToHexRgbaString(v, '0x')\n : (v) => colorToHexRgbString(v, '0x');\n }\n const NumberColorInputPlugin = {\n id: 'input-color-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n if (!('view' in params)) {\n return null;\n }\n if (params.view !== 'color') {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (args) => {\n return shouldSupportAlpha$1(args.params)\n ? colorFromRgbaNumber\n : colorFromRgbNumber;\n },\n equals: Color.equals,\n writer: (args) => {\n return createColorNumberWriter(shouldSupportAlpha$1(args.params));\n },\n },\n controller: (args) => {\n const supportsAlpha = shouldSupportAlpha$1(args.params);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: createFormatter$1(supportsAlpha),\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n function shouldSupportAlpha(initialValue) {\n return Color.isRgbaColorObject(initialValue);\n }\n const ObjectColorInputPlugin = {\n id: 'input-color-object',\n type: 'input',\n accept: (value, params) => {\n if (!Color.isColorObject(value)) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => colorFromObject,\n equals: Color.equals,\n writer: (args) => createColorObjectWriter(shouldSupportAlpha(args.initialValue)),\n },\n controller: (args) => {\n const supportsAlpha = Color.isRgbaColorObject(args.initialValue);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n const formatter = supportsAlpha\n ? colorToHexRgbaString\n : colorToHexRgbString;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: formatter,\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: supportsAlpha,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const StringColorInputPlugin = {\n id: 'input-color-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n if ('view' in params && params.view === 'text') {\n return null;\n }\n const notation = getColorNotation(value);\n if (!notation) {\n return null;\n }\n const result = parseColorInputParams(params);\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => colorFromString,\n equals: Color.equals,\n writer: (args) => {\n const notation = getColorNotation(args.initialValue);\n if (!notation) {\n throw TpError.shouldNeverHappen();\n }\n return createColorStringWriter(notation);\n },\n },\n controller: (args) => {\n const notation = getColorNotation(args.initialValue);\n if (!notation) {\n throw TpError.shouldNeverHappen();\n }\n const stringifier = getColorStringifier(notation);\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new ColorController(args.document, {\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n formatter: stringifier,\n parser: CompositeColorParser,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n supportsAlpha: hasAlphaComponent(notation),\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class PointNdConstraint {\n constructor(config) {\n this.components = config.components;\n this.asm_ = config.assembly;\n }\n constrain(value) {\n const comps = this.asm_\n .toComponents(value)\n .map((comp, index) => { var _a, _b; return (_b = (_a = this.components[index]) === null || _a === void 0 ? void 0 : _a.constrain(comp)) !== null && _b !== void 0 ? _b : comp; });\n return this.asm_.fromComponents(comps);\n }\n }\n\n const className$5 = ClassName('pndtxt');\n class PointNdTextView {\n constructor(doc, config) {\n this.textViews = config.textViews;\n this.element = doc.createElement('div');\n this.element.classList.add(className$5());\n this.textViews.forEach((v) => {\n const axisElem = doc.createElement('div');\n axisElem.classList.add(className$5('a'));\n axisElem.appendChild(v.element);\n this.element.appendChild(axisElem);\n });\n }\n }\n\n function createAxisController(doc, config, index) {\n return new NumberTextController(doc, {\n arrayPosition: index === 0 ? 'fst' : index === config.axes.length - 1 ? 'lst' : 'mid',\n baseStep: config.axes[index].baseStep,\n parser: config.parser,\n props: config.axes[index].textProps,\n value: createValue(0, {\n constraint: config.axes[index].constraint,\n }),\n viewProps: config.viewProps,\n });\n }\n class PointNdTextController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.acs_ = config.axes.map((_, index) => createAxisController(doc, config, index));\n this.acs_.forEach((c, index) => {\n connectValues({\n primary: this.value,\n secondary: c.value,\n forward: (p) => {\n return config.assembly.toComponents(p.rawValue)[index];\n },\n backward: (p, s) => {\n const comps = config.assembly.toComponents(p.rawValue);\n comps[index] = s.rawValue;\n return config.assembly.fromComponents(comps);\n },\n });\n });\n this.view = new PointNdTextView(doc, {\n textViews: this.acs_.map((ac) => ac.view),\n });\n }\n }\n\n function createStepConstraint(params) {\n if ('step' in params && !isEmpty(params.step)) {\n return new StepConstraint(params.step);\n }\n return null;\n }\n function createRangeConstraint(params) {\n if (('max' in params && !isEmpty(params.max)) ||\n ('min' in params && !isEmpty(params.min))) {\n return new RangeConstraint({\n max: params.max,\n min: params.min,\n });\n }\n return null;\n }\n function createConstraint$4(params) {\n const constraints = [];\n const sc = createStepConstraint(params);\n if (sc) {\n constraints.push(sc);\n }\n const rc = createRangeConstraint(params);\n if (rc) {\n constraints.push(rc);\n }\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n function findRange(constraint) {\n const c = constraint ? findConstraint(constraint, RangeConstraint) : null;\n if (!c) {\n return [undefined, undefined];\n }\n return [c.minValue, c.maxValue];\n }\n function estimateSuitableRange(constraint) {\n const [min, max] = findRange(constraint);\n return [min !== null && min !== void 0 ? min : 0, max !== null && max !== void 0 ? max : 100];\n }\n const NumberInputPlugin = {\n id: 'input-number',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n format: p.optional.function,\n max: p.optional.number,\n min: p.optional.number,\n options: p.optional.custom(parseListOptions),\n step: p.optional.number,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => numberFromUnknown,\n constraint: (args) => createConstraint$4(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a, _b;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(args.document, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n const formatter = (_b = ('format' in args.params ? args.params.format : undefined)) !== null && _b !== void 0 ? _b : createNumberFormatter(getSuitableDecimalDigits(c, value.rawValue));\n if (c && findConstraint(c, RangeConstraint)) {\n const [min, max] = estimateSuitableRange(c);\n return new SliderTextController(args.document, {\n baseStep: getBaseStep(c),\n parser: parseNumber,\n sliderProps: ValueMap.fromObject({\n maxValue: max,\n minValue: min,\n }),\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(c, value.rawValue),\n formatter: formatter,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new NumberTextController(args.document, {\n baseStep: getBaseStep(c),\n parser: parseNumber,\n props: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(c, value.rawValue),\n formatter: formatter,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point2d {\n constructor(x = 0, y = 0) {\n this.x = x;\n this.y = y;\n }\n getComponents() {\n return [this.x, this.y];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n if (typeof x !== 'number' || typeof y !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n };\n }\n }\n const Point2dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point2d(...comps),\n };\n\n const className$4 = ClassName('p2d');\n class Point2dView {\n constructor(doc, config) {\n this.element = doc.createElement('div');\n this.element.classList.add(className$4());\n config.viewProps.bindClassModifiers(this.element);\n bindValue(config.expanded, valueToClassName(this.element, className$4(undefined, 'expanded')));\n const headElem = doc.createElement('div');\n headElem.classList.add(className$4('h'));\n this.element.appendChild(headElem);\n const buttonElem = doc.createElement('button');\n buttonElem.classList.add(className$4('b'));\n buttonElem.appendChild(createSvgIconElement(doc, 'p2dpad'));\n config.viewProps.bindDisabled(buttonElem);\n headElem.appendChild(buttonElem);\n this.buttonElement = buttonElem;\n const textElem = doc.createElement('div');\n textElem.classList.add(className$4('t'));\n headElem.appendChild(textElem);\n this.textElement = textElem;\n if (config.pickerLayout === 'inline') {\n const pickerElem = doc.createElement('div');\n pickerElem.classList.add(className$4('p'));\n this.element.appendChild(pickerElem);\n this.pickerElement = pickerElem;\n }\n else {\n this.pickerElement = null;\n }\n }\n }\n\n const className$3 = ClassName('p2dp');\n class Point2dPickerView {\n constructor(doc, config) {\n this.onFoldableChange_ = this.onFoldableChange_.bind(this);\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.invertsY_ = config.invertsY;\n this.maxValue_ = config.maxValue;\n this.element = doc.createElement('div');\n this.element.classList.add(className$3());\n if (config.layout === 'popup') {\n this.element.classList.add(className$3(undefined, 'p'));\n }\n const padElem = doc.createElement('div');\n padElem.classList.add(className$3('p'));\n config.viewProps.bindTabIndex(padElem);\n this.element.appendChild(padElem);\n this.padElement = padElem;\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className$3('g'));\n this.padElement.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const xAxisElem = doc.createElementNS(SVG_NS, 'line');\n xAxisElem.classList.add(className$3('ax'));\n xAxisElem.setAttributeNS(null, 'x1', '0');\n xAxisElem.setAttributeNS(null, 'y1', '50%');\n xAxisElem.setAttributeNS(null, 'x2', '100%');\n xAxisElem.setAttributeNS(null, 'y2', '50%');\n this.svgElem_.appendChild(xAxisElem);\n const yAxisElem = doc.createElementNS(SVG_NS, 'line');\n yAxisElem.classList.add(className$3('ax'));\n yAxisElem.setAttributeNS(null, 'x1', '50%');\n yAxisElem.setAttributeNS(null, 'y1', '0');\n yAxisElem.setAttributeNS(null, 'x2', '50%');\n yAxisElem.setAttributeNS(null, 'y2', '100%');\n this.svgElem_.appendChild(yAxisElem);\n const lineElem = doc.createElementNS(SVG_NS, 'line');\n lineElem.classList.add(className$3('l'));\n lineElem.setAttributeNS(null, 'x1', '50%');\n lineElem.setAttributeNS(null, 'y1', '50%');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const markerElem = doc.createElement('div');\n markerElem.classList.add(className$3('m'));\n this.padElement.appendChild(markerElem);\n this.markerElem_ = markerElem;\n config.value.emitter.on('change', this.onValueChange_);\n this.value = config.value;\n this.update_();\n }\n get allFocusableElements() {\n return [this.padElement];\n }\n update_() {\n const [x, y] = this.value.rawValue.getComponents();\n const max = this.maxValue_;\n const px = mapRange(x, -max, +max, 0, 100);\n const py = mapRange(y, -max, +max, 0, 100);\n const ipy = this.invertsY_ ? 100 - py : py;\n this.lineElem_.setAttributeNS(null, 'x2', `${px}%`);\n this.lineElem_.setAttributeNS(null, 'y2', `${ipy}%`);\n this.markerElem_.style.left = `${px}%`;\n this.markerElem_.style.top = `${ipy}%`;\n }\n onValueChange_() {\n this.update_();\n }\n onFoldableChange_() {\n this.update_();\n }\n }\n\n function computeOffset(ev, baseSteps, invertsY) {\n return [\n getStepForKey(baseSteps[0], getHorizontalStepKeys(ev)),\n getStepForKey(baseSteps[1], getVerticalStepKeys(ev)) * (invertsY ? 1 : -1),\n ];\n }\n class Point2dPickerController {\n constructor(doc, config) {\n this.onPadKeyDown_ = this.onPadKeyDown_.bind(this);\n this.onPadKeyUp_ = this.onPadKeyUp_.bind(this);\n this.onPointerDown_ = this.onPointerDown_.bind(this);\n this.onPointerMove_ = this.onPointerMove_.bind(this);\n this.onPointerUp_ = this.onPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.baseSteps_ = config.baseSteps;\n this.maxValue_ = config.maxValue;\n this.invertsY_ = config.invertsY;\n this.view = new Point2dPickerView(doc, {\n invertsY: this.invertsY_,\n layout: config.layout,\n maxValue: this.maxValue_,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.ptHandler_ = new PointerHandler(this.view.padElement);\n this.ptHandler_.emitter.on('down', this.onPointerDown_);\n this.ptHandler_.emitter.on('move', this.onPointerMove_);\n this.ptHandler_.emitter.on('up', this.onPointerUp_);\n this.view.padElement.addEventListener('keydown', this.onPadKeyDown_);\n this.view.padElement.addEventListener('keyup', this.onPadKeyUp_);\n }\n handlePointerEvent_(d, opts) {\n if (!d.point) {\n return;\n }\n const max = this.maxValue_;\n const px = mapRange(d.point.x, 0, d.bounds.width, -max, +max);\n const py = mapRange(this.invertsY_ ? d.bounds.height - d.point.y : d.point.y, 0, d.bounds.height, -max, +max);\n this.value.setRawValue(new Point2d(px, py), opts);\n }\n onPointerDown_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerMove_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: false,\n last: false,\n });\n }\n onPointerUp_(ev) {\n this.handlePointerEvent_(ev.data, {\n forceEmit: true,\n last: true,\n });\n }\n onPadKeyDown_(ev) {\n if (isArrowKey(ev.key)) {\n ev.preventDefault();\n }\n const [dx, dy] = computeOffset(ev, this.baseSteps_, this.invertsY_);\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(new Point2d(this.value.rawValue.x + dx, this.value.rawValue.y + dy), {\n forceEmit: false,\n last: false,\n });\n }\n onPadKeyUp_(ev) {\n const [dx, dy] = computeOffset(ev, this.baseSteps_, this.invertsY_);\n if (dx === 0 && dy === 0) {\n return;\n }\n this.value.setRawValue(this.value.rawValue, {\n forceEmit: true,\n last: true,\n });\n }\n }\n\n class Point2dController {\n constructor(doc, config) {\n var _a, _b;\n this.onPopupChildBlur_ = this.onPopupChildBlur_.bind(this);\n this.onPopupChildKeydown_ = this.onPopupChildKeydown_.bind(this);\n this.onPadButtonBlur_ = this.onPadButtonBlur_.bind(this);\n this.onPadButtonClick_ = this.onPadButtonClick_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.foldable_ = Foldable.create(config.expanded);\n this.popC_ =\n config.pickerLayout === 'popup'\n ? new PopupController(doc, {\n viewProps: this.viewProps,\n })\n : null;\n const padC = new Point2dPickerController(doc, {\n baseSteps: [config.axes[0].baseStep, config.axes[1].baseStep],\n invertsY: config.invertsY,\n layout: config.pickerLayout,\n maxValue: config.maxValue,\n value: this.value,\n viewProps: this.viewProps,\n });\n padC.view.allFocusableElements.forEach((elem) => {\n elem.addEventListener('blur', this.onPopupChildBlur_);\n elem.addEventListener('keydown', this.onPopupChildKeydown_);\n });\n this.pickerC_ = padC;\n this.textC_ = new PointNdTextController(doc, {\n assembly: Point2dAssembly,\n axes: config.axes,\n parser: config.parser,\n value: this.value,\n viewProps: this.viewProps,\n });\n this.view = new Point2dView(doc, {\n expanded: this.foldable_.value('expanded'),\n pickerLayout: config.pickerLayout,\n viewProps: this.viewProps,\n });\n this.view.textElement.appendChild(this.textC_.view.element);\n (_a = this.view.buttonElement) === null || _a === void 0 ? void 0 : _a.addEventListener('blur', this.onPadButtonBlur_);\n (_b = this.view.buttonElement) === null || _b === void 0 ? void 0 : _b.addEventListener('click', this.onPadButtonClick_);\n if (this.popC_) {\n this.view.element.appendChild(this.popC_.view.element);\n this.popC_.view.element.appendChild(this.pickerC_.view.element);\n connectValues({\n primary: this.foldable_.value('expanded'),\n secondary: this.popC_.shows,\n forward: (p) => p.rawValue,\n backward: (_, s) => s.rawValue,\n });\n }\n else if (this.view.pickerElement) {\n this.view.pickerElement.appendChild(this.pickerC_.view.element);\n bindFoldable(this.foldable_, this.view.pickerElement);\n }\n }\n onPadButtonBlur_(e) {\n if (!this.popC_) {\n return;\n }\n const elem = this.view.element;\n const nextTarget = forceCast(e.relatedTarget);\n if (!nextTarget || !elem.contains(nextTarget)) {\n this.popC_.shows.rawValue = false;\n }\n }\n onPadButtonClick_() {\n this.foldable_.set('expanded', !this.foldable_.get('expanded'));\n if (this.foldable_.get('expanded')) {\n this.pickerC_.view.allFocusableElements[0].focus();\n }\n }\n onPopupChildBlur_(ev) {\n if (!this.popC_) {\n return;\n }\n const elem = this.popC_.view.element;\n const nextTarget = findNextTarget(ev);\n if (nextTarget && elem.contains(nextTarget)) {\n return;\n }\n if (nextTarget &&\n nextTarget === this.view.buttonElement &&\n !supportsTouch(elem.ownerDocument)) {\n return;\n }\n this.popC_.shows.rawValue = false;\n }\n onPopupChildKeydown_(ev) {\n if (this.popC_) {\n if (ev.key === 'Escape') {\n this.popC_.shows.rawValue = false;\n }\n }\n else if (this.view.pickerElement) {\n if (ev.key === 'Escape') {\n this.view.buttonElement.focus();\n }\n }\n }\n }\n\n function point2dFromUnknown(value) {\n return Point2d.isObject(value)\n ? new Point2d(value.x, value.y)\n : new Point2d();\n }\n function writePoint2d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n }\n\n function createDimensionConstraint$2(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$3(params) {\n return new PointNdConstraint({\n assembly: Point2dAssembly,\n components: [\n createDimensionConstraint$2('x' in params ? params.x : undefined),\n createDimensionConstraint$2('y' in params ? params.y : undefined),\n ],\n });\n }\n function getSuitableMaxDimensionValue(constraint, rawValue) {\n const rc = constraint && findConstraint(constraint, RangeConstraint);\n if (rc) {\n return Math.max(Math.abs(rc.minValue || 0), Math.abs(rc.maxValue || 0));\n }\n const step = getBaseStep(constraint);\n return Math.max(Math.abs(step) * 10, Math.abs(rawValue) * 10);\n }\n function getSuitableMaxValue(initialValue, constraint) {\n const xc = constraint instanceof PointNdConstraint\n ? constraint.components[0]\n : undefined;\n const yc = constraint instanceof PointNdConstraint\n ? constraint.components[1]\n : undefined;\n const xr = getSuitableMaxDimensionValue(xc, initialValue.x);\n const yr = getSuitableMaxDimensionValue(yc, initialValue.y);\n return Math.max(xr, yr);\n }\n function createAxis$2(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n function shouldInvertY(params) {\n if (!('y' in params)) {\n return false;\n }\n const yParams = params.y;\n if (!yParams) {\n return false;\n }\n return 'inverted' in yParams ? !!yParams.inverted : false;\n }\n const Point2dInputPlugin = {\n id: 'input-point2d',\n type: 'input',\n accept: (value, params) => {\n if (!Point2d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n expanded: p.optional.boolean,\n picker: p.optional.custom(parsePickerLayout),\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.object({\n inverted: p.optional.boolean,\n max: p.optional.number,\n min: p.optional.number,\n step: p.optional.number,\n }),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point2dFromUnknown,\n constraint: (args) => createConstraint$3(args.params),\n equals: Point2d.equals,\n writer: (_args) => writePoint2d,\n },\n controller: (args) => {\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n const expanded = 'expanded' in args.params ? args.params.expanded : undefined;\n const picker = 'picker' in args.params ? args.params.picker : undefined;\n return new Point2dController(doc, {\n axes: [\n createAxis$2(value.rawValue.x, c.components[0]),\n createAxis$2(value.rawValue.y, c.components[1]),\n ],\n expanded: expanded !== null && expanded !== void 0 ? expanded : false,\n invertsY: shouldInvertY(args.params),\n maxValue: getSuitableMaxValue(value.rawValue, c),\n parser: parseNumber,\n pickerLayout: picker !== null && picker !== void 0 ? picker : 'popup',\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point3d {\n constructor(x = 0, y = 0, z = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n getComponents() {\n return [this.x, this.y, this.z];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n };\n }\n }\n const Point3dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point3d(...comps),\n };\n\n function point3dFromUnknown(value) {\n return Point3d.isObject(value)\n ? new Point3d(value.x, value.y, value.z)\n : new Point3d();\n }\n function writePoint3d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n }\n\n function createDimensionConstraint$1(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$2(params) {\n return new PointNdConstraint({\n assembly: Point3dAssembly,\n components: [\n createDimensionConstraint$1('x' in params ? params.x : undefined),\n createDimensionConstraint$1('y' in params ? params.y : undefined),\n createDimensionConstraint$1('z' in params ? params.z : undefined),\n ],\n });\n }\n function createAxis$1(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n const Point3dInputPlugin = {\n id: 'input-point3d',\n type: 'input',\n accept: (value, params) => {\n if (!Point3d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.custom(parsePointDimensionParams),\n z: p.optional.custom(parsePointDimensionParams),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point3dFromUnknown,\n constraint: (args) => createConstraint$2(args.params),\n equals: Point3d.equals,\n writer: (_args) => writePoint3d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n return new PointNdTextController(args.document, {\n assembly: Point3dAssembly,\n axes: [\n createAxis$1(value.rawValue.x, c.components[0]),\n createAxis$1(value.rawValue.y, c.components[1]),\n createAxis$1(value.rawValue.z, c.components[2]),\n ],\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class Point4d {\n constructor(x = 0, y = 0, z = 0, w = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n getComponents() {\n return [this.x, this.y, this.z, this.w];\n }\n static isObject(obj) {\n if (isEmpty(obj)) {\n return false;\n }\n const x = obj.x;\n const y = obj.y;\n const z = obj.z;\n const w = obj.w;\n if (typeof x !== 'number' ||\n typeof y !== 'number' ||\n typeof z !== 'number' ||\n typeof w !== 'number') {\n return false;\n }\n return true;\n }\n static equals(v1, v2) {\n return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z && v1.w === v2.w;\n }\n toObject() {\n return {\n x: this.x,\n y: this.y,\n z: this.z,\n w: this.w,\n };\n }\n }\n const Point4dAssembly = {\n toComponents: (p) => p.getComponents(),\n fromComponents: (comps) => new Point4d(...comps),\n };\n\n function point4dFromUnknown(value) {\n return Point4d.isObject(value)\n ? new Point4d(value.x, value.y, value.z, value.w)\n : new Point4d();\n }\n function writePoint4d(target, value) {\n target.writeProperty('x', value.x);\n target.writeProperty('y', value.y);\n target.writeProperty('z', value.z);\n target.writeProperty('w', value.w);\n }\n\n function createDimensionConstraint(params) {\n if (!params) {\n return undefined;\n }\n const constraints = [];\n if (!isEmpty(params.step)) {\n constraints.push(new StepConstraint(params.step));\n }\n if (!isEmpty(params.max) || !isEmpty(params.min)) {\n constraints.push(new RangeConstraint({\n max: params.max,\n min: params.min,\n }));\n }\n return new CompositeConstraint(constraints);\n }\n function createConstraint$1(params) {\n return new PointNdConstraint({\n assembly: Point4dAssembly,\n components: [\n createDimensionConstraint('x' in params ? params.x : undefined),\n createDimensionConstraint('y' in params ? params.y : undefined),\n createDimensionConstraint('z' in params ? params.z : undefined),\n createDimensionConstraint('w' in params ? params.w : undefined),\n ],\n });\n }\n function createAxis(initialValue, constraint) {\n return {\n baseStep: getBaseStep(constraint),\n constraint: constraint,\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(constraint, initialValue),\n formatter: createNumberFormatter(getSuitableDecimalDigits(constraint, initialValue)),\n }),\n };\n }\n const Point4dInputPlugin = {\n id: 'input-point4d',\n type: 'input',\n accept: (value, params) => {\n if (!Point4d.isObject(value)) {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n x: p.optional.custom(parsePointDimensionParams),\n y: p.optional.custom(parsePointDimensionParams),\n z: p.optional.custom(parsePointDimensionParams),\n w: p.optional.custom(parsePointDimensionParams),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => point4dFromUnknown,\n constraint: (args) => createConstraint$1(args.params),\n equals: Point4d.equals,\n writer: (_args) => writePoint4d,\n },\n controller: (args) => {\n const value = args.value;\n const c = args.constraint;\n if (!(c instanceof PointNdConstraint)) {\n throw TpError.shouldNeverHappen();\n }\n return new PointNdTextController(args.document, {\n assembly: Point4dAssembly,\n axes: value.rawValue\n .getComponents()\n .map((comp, index) => createAxis(comp, c.components[index])),\n parser: parseNumber,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n function createConstraint(params) {\n const constraints = [];\n const lc = createListConstraint(params.options);\n if (lc) {\n constraints.push(lc);\n }\n return new CompositeConstraint(constraints);\n }\n const StringInputPlugin = {\n id: 'input-string',\n type: 'input',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.optional.custom(parseListOptions),\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n constraint: (args) => createConstraint(args.params),\n writer: (_args) => writePrimitive,\n },\n controller: (args) => {\n var _a;\n const doc = args.document;\n const value = args.value;\n const c = args.constraint;\n if (c && findConstraint(c, ListConstraint)) {\n return new ListController(doc, {\n props: ValueMap.fromObject({\n options: (_a = findListItems(c)) !== null && _a !== void 0 ? _a : [],\n }),\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new TextController(doc, {\n parser: (v) => v,\n props: ValueMap.fromObject({\n formatter: formatString,\n }),\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n const Constants = {\n monitor: {\n defaultInterval: 200,\n defaultLineCount: 3,\n },\n };\n\n const className$2 = ClassName('mll');\n class MultiLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(className$2());\n config.viewProps.bindClassModifiers(this.element);\n const textareaElem = doc.createElement('textarea');\n textareaElem.classList.add(className$2('i'));\n textareaElem.style.height = `calc(var(--bld-us) * ${config.lineCount})`;\n textareaElem.readOnly = true;\n config.viewProps.bindDisabled(textareaElem);\n this.element.appendChild(textareaElem);\n this.textareaElem_ = textareaElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const elem = this.textareaElem_;\n const shouldScroll = elem.scrollTop === elem.scrollHeight - elem.clientHeight;\n const lines = [];\n this.value.rawValue.forEach((value) => {\n if (value !== undefined) {\n lines.push(this.formatter_(value));\n }\n });\n elem.textContent = lines.join('\\n');\n if (shouldScroll) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n }\n\n class MultiLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new MultiLogView(doc, {\n formatter: config.formatter,\n lineCount: config.lineCount,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n const className$1 = ClassName('sgl');\n class SingleLogView {\n constructor(doc, config) {\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.formatter_ = config.formatter;\n this.element = doc.createElement('div');\n this.element.classList.add(className$1());\n config.viewProps.bindClassModifiers(this.element);\n const inputElem = doc.createElement('input');\n inputElem.classList.add(className$1('i'));\n inputElem.readOnly = true;\n inputElem.type = 'text';\n config.viewProps.bindDisabled(inputElem);\n this.element.appendChild(inputElem);\n this.inputElement = inputElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n update_() {\n const values = this.value.rawValue;\n const lastValue = values[values.length - 1];\n this.inputElement.value =\n lastValue !== undefined ? this.formatter_(lastValue) : '';\n }\n onValueUpdate_() {\n this.update_();\n }\n }\n\n class SingleLogController {\n constructor(doc, config) {\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.view = new SingleLogView(doc, {\n formatter: config.formatter,\n value: this.value,\n viewProps: this.viewProps,\n });\n }\n }\n\n const BooleanMonitorPlugin = {\n id: 'monitor-bool',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'boolean') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n lineCount: p.optional.number,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => boolFromUnknown,\n },\n controller: (args) => {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: BooleanFormatter,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: BooleanFormatter,\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: args.value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class GraphCursor {\n constructor() {\n this.emitter = new Emitter();\n this.index_ = -1;\n }\n get index() {\n return this.index_;\n }\n set index(index) {\n const changed = this.index_ !== index;\n if (changed) {\n this.index_ = index;\n this.emitter.emit('change', {\n index: index,\n sender: this,\n });\n }\n }\n }\n\n const className = ClassName('grl');\n class GraphLogView {\n constructor(doc, config) {\n this.onCursorChange_ = this.onCursorChange_.bind(this);\n this.onValueUpdate_ = this.onValueUpdate_.bind(this);\n this.element = doc.createElement('div');\n this.element.classList.add(className());\n config.viewProps.bindClassModifiers(this.element);\n this.formatter_ = config.formatter;\n this.minValue_ = config.minValue;\n this.maxValue_ = config.maxValue;\n this.cursor_ = config.cursor;\n this.cursor_.emitter.on('change', this.onCursorChange_);\n const svgElem = doc.createElementNS(SVG_NS, 'svg');\n svgElem.classList.add(className('g'));\n svgElem.style.height = `calc(var(--bld-us) * ${config.lineCount})`;\n this.element.appendChild(svgElem);\n this.svgElem_ = svgElem;\n const lineElem = doc.createElementNS(SVG_NS, 'polyline');\n this.svgElem_.appendChild(lineElem);\n this.lineElem_ = lineElem;\n const tooltipElem = doc.createElement('div');\n tooltipElem.classList.add(className('t'), ClassName('tt')());\n this.element.appendChild(tooltipElem);\n this.tooltipElem_ = tooltipElem;\n config.value.emitter.on('change', this.onValueUpdate_);\n this.value = config.value;\n this.update_();\n }\n get graphElement() {\n return this.svgElem_;\n }\n update_() {\n const bounds = this.svgElem_.getBoundingClientRect();\n const maxIndex = this.value.rawValue.length - 1;\n const min = this.minValue_;\n const max = this.maxValue_;\n const points = [];\n this.value.rawValue.forEach((v, index) => {\n if (v === undefined) {\n return;\n }\n const x = mapRange(index, 0, maxIndex, 0, bounds.width);\n const y = mapRange(v, min, max, bounds.height, 0);\n points.push([x, y].join(','));\n });\n this.lineElem_.setAttributeNS(null, 'points', points.join(' '));\n const tooltipElem = this.tooltipElem_;\n const value = this.value.rawValue[this.cursor_.index];\n if (value === undefined) {\n tooltipElem.classList.remove(className('t', 'a'));\n return;\n }\n const tx = mapRange(this.cursor_.index, 0, maxIndex, 0, bounds.width);\n const ty = mapRange(value, min, max, bounds.height, 0);\n tooltipElem.style.left = `${tx}px`;\n tooltipElem.style.top = `${ty}px`;\n tooltipElem.textContent = `${this.formatter_(value)}`;\n if (!tooltipElem.classList.contains(className('t', 'a'))) {\n tooltipElem.classList.add(className('t', 'a'), className('t', 'in'));\n forceReflow(tooltipElem);\n tooltipElem.classList.remove(className('t', 'in'));\n }\n }\n onValueUpdate_() {\n this.update_();\n }\n onCursorChange_() {\n this.update_();\n }\n }\n\n class GraphLogController {\n constructor(doc, config) {\n this.onGraphMouseMove_ = this.onGraphMouseMove_.bind(this);\n this.onGraphMouseLeave_ = this.onGraphMouseLeave_.bind(this);\n this.onGraphPointerDown_ = this.onGraphPointerDown_.bind(this);\n this.onGraphPointerMove_ = this.onGraphPointerMove_.bind(this);\n this.onGraphPointerUp_ = this.onGraphPointerUp_.bind(this);\n this.value = config.value;\n this.viewProps = config.viewProps;\n this.cursor_ = new GraphCursor();\n this.view = new GraphLogView(doc, {\n cursor: this.cursor_,\n formatter: config.formatter,\n lineCount: config.lineCount,\n maxValue: config.maxValue,\n minValue: config.minValue,\n value: this.value,\n viewProps: this.viewProps,\n });\n if (!supportsTouch(doc)) {\n this.view.element.addEventListener('mousemove', this.onGraphMouseMove_);\n this.view.element.addEventListener('mouseleave', this.onGraphMouseLeave_);\n }\n else {\n const ph = new PointerHandler(this.view.element);\n ph.emitter.on('down', this.onGraphPointerDown_);\n ph.emitter.on('move', this.onGraphPointerMove_);\n ph.emitter.on('up', this.onGraphPointerUp_);\n }\n }\n onGraphMouseLeave_() {\n this.cursor_.index = -1;\n }\n onGraphMouseMove_(ev) {\n const bounds = this.view.element.getBoundingClientRect();\n this.cursor_.index = Math.floor(mapRange(ev.offsetX, 0, bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerDown_(ev) {\n this.onGraphPointerMove_(ev);\n }\n onGraphPointerMove_(ev) {\n if (!ev.data.point) {\n this.cursor_.index = -1;\n return;\n }\n this.cursor_.index = Math.floor(mapRange(ev.data.point.x, 0, ev.data.bounds.width, 0, this.value.rawValue.length));\n }\n onGraphPointerUp_() {\n this.cursor_.index = -1;\n }\n }\n\n function createFormatter(params) {\n return 'format' in params && !isEmpty(params.format)\n ? params.format\n : createNumberFormatter(2);\n }\n function createTextMonitor(args) {\n var _a;\n if (args.value.rawValue.length === 1) {\n return new SingleLogController(args.document, {\n formatter: createFormatter(args.params),\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n return new MultiLogController(args.document, {\n formatter: createFormatter(args.params),\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n function createGraphMonitor(args) {\n var _a, _b, _c;\n return new GraphLogController(args.document, {\n formatter: createFormatter(args.params),\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n maxValue: (_b = ('max' in args.params ? args.params.max : null)) !== null && _b !== void 0 ? _b : 100,\n minValue: (_c = ('min' in args.params ? args.params.min : null)) !== null && _c !== void 0 ? _c : 0,\n value: args.value,\n viewProps: args.viewProps,\n });\n }\n function shouldShowGraph(params) {\n return 'view' in params && params.view === 'graph';\n }\n const NumberMonitorPlugin = {\n id: 'monitor-number',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'number') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n format: p.optional.function,\n lineCount: p.optional.number,\n max: p.optional.number,\n min: p.optional.number,\n view: p.optional.string,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n defaultBufferSize: (params) => (shouldShowGraph(params) ? 64 : 1),\n reader: (_args) => numberFromUnknown,\n },\n controller: (args) => {\n if (shouldShowGraph(args.params)) {\n return createGraphMonitor(args);\n }\n return createTextMonitor(args);\n },\n };\n\n const StringMonitorPlugin = {\n id: 'monitor-string',\n type: 'monitor',\n accept: (value, params) => {\n if (typeof value !== 'string') {\n return null;\n }\n const p = ParamsParsers;\n const result = parseParams(params, {\n lineCount: p.optional.number,\n multiline: p.optional.boolean,\n });\n return result\n ? {\n initialValue: value,\n params: result,\n }\n : null;\n },\n binding: {\n reader: (_args) => stringFromUnknown,\n },\n controller: (args) => {\n var _a;\n const value = args.value;\n const multiline = value.rawValue.length > 1 ||\n ('multiline' in args.params && args.params.multiline);\n if (multiline) {\n return new MultiLogController(args.document, {\n formatter: formatString,\n lineCount: (_a = args.params.lineCount) !== null && _a !== void 0 ? _a : Constants.monitor.defaultLineCount,\n value: value,\n viewProps: args.viewProps,\n });\n }\n return new SingleLogController(args.document, {\n formatter: formatString,\n value: value,\n viewProps: args.viewProps,\n });\n },\n };\n\n class InputBinding {\n constructor(config) {\n this.onValueChange_ = this.onValueChange_.bind(this);\n this.reader = config.reader;\n this.writer = config.writer;\n this.emitter = new Emitter();\n this.value = config.value;\n this.value.emitter.on('change', this.onValueChange_);\n this.target = config.target;\n this.read();\n }\n read() {\n const targetValue = this.target.read();\n if (targetValue !== undefined) {\n this.value.rawValue = this.reader(targetValue);\n }\n }\n write_(rawValue) {\n this.writer(this.target, rawValue);\n }\n onValueChange_(ev) {\n this.write_(ev.rawValue);\n this.emitter.emit('change', {\n options: ev.options,\n rawValue: ev.rawValue,\n sender: this,\n });\n }\n }\n\n function createInputBindingController(plugin, args) {\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const p = ParamsParsers;\n const valueArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const reader = plugin.binding.reader(valueArgs);\n const constraint = plugin.binding.constraint\n ? plugin.binding.constraint(valueArgs)\n : undefined;\n const value = createValue(reader(result.initialValue), {\n constraint: constraint,\n equals: plugin.binding.equals,\n });\n const binding = new InputBinding({\n reader: reader,\n target: args.target,\n value: value,\n writer: plugin.binding.writer(valueArgs),\n });\n const disabled = p.optional.boolean(args.params.disabled).value;\n const hidden = p.optional.boolean(args.params.hidden).value;\n const controller = plugin.controller({\n constraint: constraint,\n document: args.document,\n initialValue: result.initialValue,\n params: result.params,\n value: binding.value,\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n const label = p.optional.string(args.params.label).value;\n return new InputBindingController(args.document, {\n binding: binding,\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: label || args.target.key,\n }),\n valueController: controller,\n });\n }\n\n class MonitorBinding {\n constructor(config) {\n this.onTick_ = this.onTick_.bind(this);\n this.reader_ = config.reader;\n this.target = config.target;\n this.emitter = new Emitter();\n this.value = config.value;\n this.ticker = config.ticker;\n this.ticker.emitter.on('tick', this.onTick_);\n this.read();\n }\n dispose() {\n this.ticker.dispose();\n }\n read() {\n const targetValue = this.target.read();\n if (targetValue === undefined) {\n return;\n }\n const buffer = this.value.rawValue;\n const newValue = this.reader_(targetValue);\n this.value.rawValue = createPushedBuffer(buffer, newValue);\n this.emitter.emit('update', {\n rawValue: newValue,\n sender: this,\n });\n }\n onTick_(_) {\n this.read();\n }\n }\n\n function createTicker(document, interval) {\n return interval === 0\n ? new ManualTicker()\n : new IntervalTicker(document, interval !== null && interval !== void 0 ? interval : Constants.monitor.defaultInterval);\n }\n function createMonitorBindingController(plugin, args) {\n var _a, _b, _c;\n const P = ParamsParsers;\n const result = plugin.accept(args.target.read(), args.params);\n if (isEmpty(result)) {\n return null;\n }\n const bindingArgs = {\n target: args.target,\n initialValue: result.initialValue,\n params: result.params,\n };\n const reader = plugin.binding.reader(bindingArgs);\n const bufferSize = (_b = (_a = P.optional.number(args.params.bufferSize).value) !== null && _a !== void 0 ? _a : (plugin.binding.defaultBufferSize &&\n plugin.binding.defaultBufferSize(result.params))) !== null && _b !== void 0 ? _b : 1;\n const interval = P.optional.number(args.params.interval).value;\n const binding = new MonitorBinding({\n reader: reader,\n target: args.target,\n ticker: createTicker(args.document, interval),\n value: initializeBuffer(bufferSize),\n });\n const disabled = P.optional.boolean(args.params.disabled).value;\n const hidden = P.optional.boolean(args.params.hidden).value;\n const controller = plugin.controller({\n document: args.document,\n params: result.params,\n value: binding.value,\n viewProps: ViewProps.create({\n disabled: disabled,\n hidden: hidden,\n }),\n });\n const label = (_c = P.optional.string(args.params.label).value) !== null && _c !== void 0 ? _c : args.target.key;\n return new MonitorBindingController(args.document, {\n binding: binding,\n blade: createBlade(),\n props: ValueMap.fromObject({\n label: label,\n }),\n valueController: controller,\n });\n }\n\n class PluginPool {\n constructor() {\n this.pluginsMap_ = {\n blades: [],\n inputs: [],\n monitors: [],\n };\n }\n getAll() {\n return [\n ...this.pluginsMap_.blades,\n ...this.pluginsMap_.inputs,\n ...this.pluginsMap_.monitors,\n ];\n }\n register(r) {\n if (r.type === 'blade') {\n this.pluginsMap_.blades.unshift(r);\n }\n else if (r.type === 'input') {\n this.pluginsMap_.inputs.unshift(r);\n }\n else if (r.type === 'monitor') {\n this.pluginsMap_.monitors.unshift(r);\n }\n }\n createInput(document, target, params) {\n const initialValue = target.read();\n if (isEmpty(initialValue)) {\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n const bc = this.pluginsMap_.inputs.reduce((result, plugin) => result ||\n createInputBindingController(plugin, {\n document: document,\n target: target,\n params: params,\n }), null);\n if (bc) {\n return bc;\n }\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n createMonitor(document, target, params) {\n const bc = this.pluginsMap_.monitors.reduce((result, plugin) => result ||\n createMonitorBindingController(plugin, {\n document: document,\n params: params,\n target: target,\n }), null);\n if (bc) {\n return bc;\n }\n throw new TpError({\n context: {\n key: target.key,\n },\n type: 'nomatchingcontroller',\n });\n }\n createBlade(document, params) {\n const bc = this.pluginsMap_.blades.reduce((result, plugin) => result ||\n createBladeController(plugin, {\n document: document,\n params: params,\n }), null);\n if (!bc) {\n throw new TpError({\n type: 'nomatchingview',\n context: {\n params: params,\n },\n });\n }\n return bc;\n }\n createBladeApi(bc) {\n if (bc instanceof InputBindingController) {\n return new InputBindingApi(bc);\n }\n if (bc instanceof MonitorBindingController) {\n return new MonitorBindingApi(bc);\n }\n if (bc instanceof RackController) {\n return new RackApi(bc, this);\n }\n const api = this.pluginsMap_.blades.reduce((result, plugin) => result ||\n plugin.api({\n controller: bc,\n pool: this,\n }), null);\n if (!api) {\n throw TpError.shouldNeverHappen();\n }\n return api;\n }\n }\n\n function createDefaultPluginPool() {\n const pool = new PluginPool();\n [\n Point2dInputPlugin,\n Point3dInputPlugin,\n Point4dInputPlugin,\n StringInputPlugin,\n NumberInputPlugin,\n StringColorInputPlugin,\n ObjectColorInputPlugin,\n NumberColorInputPlugin,\n BooleanInputPlugin,\n BooleanMonitorPlugin,\n StringMonitorPlugin,\n NumberMonitorPlugin,\n ButtonBladePlugin,\n FolderBladePlugin,\n SeparatorBladePlugin,\n TabBladePlugin,\n ].forEach((p) => {\n pool.register(p);\n });\n return pool;\n }\n\n class ListApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get options() {\n return this.controller_.valueController.props.get('options');\n }\n set options(options) {\n this.controller_.valueController.props.set('options', options);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class SliderApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get maxValue() {\n return this.controller_.valueController.sliderController.props.get('maxValue');\n }\n set maxValue(maxValue) {\n this.controller_.valueController.sliderController.props.set('maxValue', maxValue);\n }\n get minValue() {\n return this.controller_.valueController.sliderController.props.get('minValue');\n }\n set minValue(minValue) {\n this.controller_.valueController.sliderController.props.set('minValue', minValue);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n class TextApi extends BladeApi {\n constructor(controller) {\n super(controller);\n this.emitter_ = new Emitter();\n this.controller_.valueController.value.emitter.on('change', (ev) => {\n this.emitter_.emit('change', {\n event: new TpChangeEvent(this, ev.rawValue),\n });\n });\n }\n get label() {\n return this.controller_.props.get('label');\n }\n set label(label) {\n this.controller_.props.set('label', label);\n }\n get formatter() {\n return this.controller_.valueController.props.get('formatter');\n }\n set formatter(formatter) {\n this.controller_.valueController.props.set('formatter', formatter);\n }\n get value() {\n return this.controller_.valueController.value.rawValue;\n }\n set value(value) {\n this.controller_.valueController.value.rawValue = value;\n }\n on(eventName, handler) {\n const bh = handler.bind(this);\n this.emitter_.on(eventName, (ev) => {\n bh(ev.event);\n });\n return this;\n }\n }\n\n const ListBladePlugin = (function () {\n return {\n id: 'list',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n options: p.required.custom(parseListOptions),\n value: p.required.raw,\n view: p.required.constant('list'),\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n const ic = new ListController(args.document, {\n props: ValueMap.fromObject({\n options: normalizeListOptions(args.params.options),\n }),\n value: createValue(args.params.value),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof ListController)) {\n return null;\n }\n return new ListApi(args.controller);\n },\n };\n })();\n\n /**\n * @hidden\n */\n function exportPresetJson(targets) {\n return targets.reduce((result, target) => {\n return Object.assign(result, {\n [target.presetKey]: target.read(),\n });\n }, {});\n }\n /**\n * @hidden\n */\n function importPresetJson(targets, preset) {\n targets.forEach((target) => {\n const value = preset[target.presetKey];\n if (value !== undefined) {\n target.write(value);\n }\n });\n }\n\n class RootApi extends FolderApi {\n /**\n * @hidden\n */\n constructor(controller, pool) {\n super(controller, pool);\n }\n get element() {\n return this.controller_.view.element;\n }\n /**\n * Imports a preset of all inputs.\n * @param preset The preset object to import.\n */\n importPreset(preset) {\n const targets = this.controller_.rackController.rack\n .find(InputBindingController)\n .map((ibc) => {\n return ibc.binding.target;\n });\n importPresetJson(targets, preset);\n this.refresh();\n }\n /**\n * Exports a preset of all inputs.\n * @return An exported preset object.\n */\n exportPreset() {\n const targets = this.controller_.rackController.rack\n .find(InputBindingController)\n .map((ibc) => {\n return ibc.binding.target;\n });\n return exportPresetJson(targets);\n }\n /**\n * Refreshes all bindings of the pane.\n */\n refresh() {\n // Force-read all input bindings\n this.controller_.rackController.rack\n .find(InputBindingController)\n .forEach((ibc) => {\n ibc.binding.read();\n });\n // Force-read all monitor bindings\n this.controller_.rackController.rack\n .find(MonitorBindingController)\n .forEach((mbc) => {\n mbc.binding.read();\n });\n }\n }\n\n class RootController extends FolderController {\n constructor(doc, config) {\n super(doc, {\n expanded: config.expanded,\n blade: config.blade,\n props: config.props,\n root: true,\n viewProps: config.viewProps,\n });\n }\n }\n\n const SliderBladePlugin = {\n id: 'slider',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n max: p.required.number,\n min: p.required.number,\n view: p.required.constant('slider'),\n format: p.optional.function,\n label: p.optional.string,\n value: p.optional.number,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a, _b;\n const v = (_a = args.params.value) !== null && _a !== void 0 ? _a : 0;\n const vc = new SliderTextController(args.document, {\n baseStep: 1,\n parser: parseNumber,\n sliderProps: ValueMap.fromObject({\n maxValue: args.params.max,\n minValue: args.params.min,\n }),\n textProps: ValueMap.fromObject({\n draggingScale: getSuitableDraggingScale(undefined, v),\n formatter: (_b = args.params.format) !== null && _b !== void 0 ? _b : numberToString,\n }),\n value: createValue(v),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: vc,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof SliderTextController)) {\n return null;\n }\n return new SliderApi(args.controller);\n },\n };\n\n const TextBladePlugin = (function () {\n return {\n id: 'text',\n type: 'blade',\n accept(params) {\n const p = ParamsParsers;\n const result = parseParams(params, {\n parse: p.required.function,\n value: p.required.raw,\n view: p.required.constant('text'),\n format: p.optional.function,\n label: p.optional.string,\n });\n return result ? { params: result } : null;\n },\n controller(args) {\n var _a;\n const ic = new TextController(args.document, {\n parser: args.params.parse,\n props: ValueMap.fromObject({\n formatter: (_a = args.params.format) !== null && _a !== void 0 ? _a : ((v) => String(v)),\n }),\n value: createValue(args.params.value),\n viewProps: args.viewProps,\n });\n return new LabeledValueController(args.document, {\n blade: args.blade,\n props: ValueMap.fromObject({\n label: args.params.label,\n }),\n valueController: ic,\n });\n },\n api(args) {\n if (!(args.controller instanceof LabeledValueController)) {\n return null;\n }\n if (!(args.controller.valueController instanceof TextController)) {\n return null;\n }\n return new TextApi(args.controller);\n },\n };\n })();\n\n function createDefaultWrapperElement(doc) {\n const elem = doc.createElement('div');\n elem.classList.add(ClassName('dfw')());\n if (doc.body) {\n doc.body.appendChild(elem);\n }\n return elem;\n }\n function embedStyle(doc, id, css) {\n if (doc.querySelector(`style[data-tp-style=${id}]`)) {\n return;\n }\n const styleElem = doc.createElement('style');\n styleElem.dataset.tpStyle = id;\n styleElem.textContent = css;\n doc.head.appendChild(styleElem);\n }\n /**\n * The root pane of Tweakpane.\n */\n class Pane extends RootApi {\n constructor(opt_config) {\n var _a;\n const config = opt_config || {};\n const doc = (_a = config.document) !== null && _a !== void 0 ? _a : getWindowDocument();\n const pool = createDefaultPluginPool();\n const rootController = new RootController(doc, {\n expanded: config.expanded,\n blade: createBlade(),\n props: ValueMap.fromObject({\n title: config.title,\n }),\n viewProps: ViewProps.create(),\n });\n super(rootController, pool);\n this.pool_ = pool;\n this.containerElem_ = config.container || createDefaultWrapperElement(doc);\n this.containerElem_.appendChild(this.element);\n this.doc_ = doc;\n this.usesDefaultWrapper_ = !config.container;\n this.setUpDefaultPlugins_();\n }\n get document() {\n if (!this.doc_) {\n throw TpError.alreadyDisposed();\n }\n return this.doc_;\n }\n dispose() {\n const containerElem = this.containerElem_;\n if (!containerElem) {\n throw TpError.alreadyDisposed();\n }\n if (this.usesDefaultWrapper_) {\n const parentElem = containerElem.parentElement;\n if (parentElem) {\n parentElem.removeChild(containerElem);\n }\n }\n this.containerElem_ = null;\n this.doc_ = null;\n super.dispose();\n }\n registerPlugin(bundle) {\n const plugins = 'plugin' in bundle\n ? [bundle.plugin]\n : 'plugins' in bundle\n ? bundle.plugins\n : [];\n plugins.forEach((p) => {\n this.pool_.register(p);\n this.embedPluginStyle_(p);\n });\n }\n embedPluginStyle_(plugin) {\n if (plugin.css) {\n embedStyle(this.document, `plugin-${plugin.id}`, plugin.css);\n }\n }\n setUpDefaultPlugins_() {\n // NOTE: This string literal will be replaced with the default CSS by Rollup at the compilation time\n embedStyle(this.document, 'default', '.tp-lstv_s,.tp-btnv_b,.tp-p2dv_b,.tp-colswv_sw,.tp-p2dpv_p,.tp-txtv_i,.tp-grlv_g,.tp-sglv_i,.tp-mllv_i,.tp-fldv_b,.tp-rotv_b,.tp-ckbv_i,.tp-coltxtv_ms,.tp-tbiv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-lstv_s,.tp-btnv_b,.tp-p2dv_b{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-lstv_s:hover,.tp-btnv_b:hover,.tp-p2dv_b:hover{background-color:var(--btn-bg-h)}.tp-lstv_s:focus,.tp-btnv_b:focus,.tp-p2dv_b:focus{background-color:var(--btn-bg-f)}.tp-lstv_s:active,.tp-btnv_b:active,.tp-p2dv_b:active{background-color:var(--btn-bg-a)}.tp-lstv_s:disabled,.tp-btnv_b:disabled,.tp-p2dv_b:disabled{opacity:0.5}.tp-colswv_sw,.tp-p2dpv_p,.tp-txtv_i{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-colswv_sw:hover,.tp-p2dpv_p:hover,.tp-txtv_i:hover{background-color:var(--in-bg-h)}.tp-colswv_sw:focus,.tp-p2dpv_p:focus,.tp-txtv_i:focus{background-color:var(--in-bg-f)}.tp-colswv_sw:active,.tp-p2dpv_p:active,.tp-txtv_i:active{background-color:var(--in-bg-a)}.tp-colswv_sw:disabled,.tp-p2dpv_p:disabled,.tp-txtv_i:disabled{opacity:0.5}.tp-grlv_g,.tp-sglv_i,.tp-mllv_i{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);width:100%}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono,Source Code Pro,Menlo,Courier,monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, #2f3137);--bs-sh: var(--tp-base-shadow-color, rgba(0,0,0,0.2));--btn-bg: var(--tp-button-background-color, #adafb8);--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, #2f3137);--cnt-bg: var(--tp-container-background-color, rgba(187,188,196,0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187,188,196,0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187,188,196,0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187,188,196,0.15));--cnt-fg: var(--tp-container-foreground-color, #bbbcc4);--in-bg: var(--tp-input-background-color, rgba(187,188,196,0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187,188,196,0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187,188,196,0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187,188,196,0.15));--in-fg: var(--tp-input-foreground-color, #bbbcc4);--lbl-fg: var(--tp-label-foreground-color, rgba(187,188,196,0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0,0,0,0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187,188,196,0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(0,0,0,0.2))}.tp-fldv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-rotv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1 * var(--cnt-v-p))}.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-fldv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-rotv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-fldv_c>.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv{margin-left:4px}.tp-fldv_c>.tp-fldv>.tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-fldv_c .tp-fldv>.tp-fldv_c,.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-fldv_c>.tp-tabv>.tp-tabv_i,.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-fldv_c .tp-tabv>.tp-tabv_c,.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-fldv_b,.tp-rotv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(2px * 2 + var(--bld-us) + var(--cnt-h-p));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-fldv_b:hover,.tp-rotv_b:hover{background-color:var(--cnt-bg-h)}.tp-fldv_b:focus,.tp-rotv_b:focus{background-color:var(--cnt-bg-f)}.tp-fldv_b:active,.tp-rotv_b:active{background-color:var(--cnt-bg-a)}.tp-fldv_b:disabled,.tp-rotv_b:disabled{opacity:0.5}.tp-fldv_m,.tp-rotv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:\\'\\';display:block;height:6px;right:calc(var(--cnt-h-p) + (var(--bld-us) + 4px - 6px) / 2 - 2px);margin:auto;opacity:0.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m,.tp-rotv.tp-rotv-expanded .tp-rotv_m{transform:none}.tp-fldv_c,.tp-rotv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c,.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c{display:none}.tp-fldv.tp-fldv-expanded>.tp-fldv_c,.tp-rotv.tp-rotv-expanded .tp-rotv_c{opacity:1;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-coltxtv_m,.tp-lstv{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-coltxtv_mm,.tp-lstv_m{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-coltxtv_mm svg,.tp-lstv_m svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-coltxtv_mm svg path,.tp-lstv_m svg path{fill:currentColor}.tp-coltxtv_w,.tp-pndtxtv{display:flex}.tp-coltxtv_c,.tp-pndtxtv_a{width:100%}.tp-coltxtv_c+.tp-coltxtv_c,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-pndtxtv_a{margin-left:2px}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:0.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--bld-us)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1 * var(--cnt-h-p));right:calc(-1 * var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:\\'\\';height:2px;left:calc(-1 * var(--cnt-h-p));position:absolute;right:calc(-1 * var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us) * 4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,0.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0,0,0,0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--elm-br);border:rgba(255,255,255,0.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,0.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--elm-br);box-shadow:0 0 2px rgba(0,0,0,0.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,0.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--elm-br)}.tp-colswv.tp-v-disabled{opacity:0.5}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,0.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:\\'\\';display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us) * 3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left 0.05s, top 0.05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:0.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-h-p);padding-right:var(--cnt-h-p)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:0.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:0.5}.tp-mllv_i{display:block;height:calc(var(--bld-us) * 3);line-height:var(--bld-us);padding:0 4px;resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:0.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1 * var(--cnt-h-p));right:calc(-1 * var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:0.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:0.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:0.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:\\'\\';display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:\\'\\';display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-br);bottom:0;content:\\'\\';display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv.tp-v-disabled{opacity:0.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:\\'\\';height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:\\'\\';height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:0.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:0.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:0.3}.tp-txtv_k{cursor:pointer;height:100%;left:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:\\'\\';height:calc(var(--bld-us) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:0.1;position:absolute;top:0;transition:border-radius 0.1s, height 0.1s, transform 0.1s, width 0.1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--elm-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) transparent transparent transparent;border-style:solid;border-width:2px;box-sizing:border-box;content:\\'\\';font-size:0.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--font-family);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(2px * 2 + var(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1 * var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1 * var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}');\n this.pool_.getAll().forEach((plugin) => {\n this.embedPluginStyle_(plugin);\n });\n this.registerPlugin({\n plugins: [\n SliderBladePlugin,\n ListBladePlugin,\n TabBladePlugin,\n TextBladePlugin,\n ],\n });\n }\n }\n\n const VERSION = new Semver('3.0.7');\n\n exports.BladeApi = BladeApi;\n exports.ButtonApi = ButtonApi;\n exports.FolderApi = FolderApi;\n exports.InputBindingApi = InputBindingApi;\n exports.ListApi = ListApi;\n exports.MonitorBindingApi = MonitorBindingApi;\n exports.Pane = Pane;\n exports.SeparatorApi = SeparatorApi;\n exports.SliderApi = SliderApi;\n exports.TabApi = TabApi;\n exports.TabPageApi = TabPageApi;\n exports.TextApi = TextApi;\n exports.TpChangeEvent = TpChangeEvent;\n exports.VERSION = VERSION;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","import * as THREE from 'three'\nimport anime from 'animejs'\nimport Base from './base'\nimport { rotateAroundWorldAxis, XYZ_VALUE, AxesEnum, AxesVec3, getFaceColor, colors } from './utils'\nimport { Pane } from 'tweakpane'\n\nconst pane: any = new Pane()\nconst debug = {\n level: 3,\n rotateTime: 300,\n gutter: 5,\n radius: 20,\n gutterColor: '#222',\n cubeSize: 2,\n}\n\nexport default class CreepCube extends Base {\n intersect1: THREE.Intersection | null = null\n intersect2: THREE.Intersection | null = null\n startPlane: THREE.Vector3 | undefined = undefined\n startPoint: THREE.Vector3 | null = null\n movePoint: THREE.Vector3 | null = null\n touchCube: THREE.Mesh | null = null\n isRotating = false\n isShuffling = false\n isSolving = false\n mouse = new THREE.Vector2(0, 0)\n raycaster = new THREE.Raycaster()\n mesh!: THREE.Group\n children: THREE.Mesh[] = []\n coordinate: THREE.Vector3[] = []\n\n constructor (config = {\n level: 3\n }) {\n super()\n this.initDebug()\n this.initCube()\n // this.initLight()\n window.addEventListener('mousedown', this.onMouseDown.bind(this))\n window.addEventListener('touchstart', this.onMouseDown.bind(this))\n window.addEventListener('mousemove', this.onMouseMove.bind(this))\n window.addEventListener('touchmove', this.onMouseMove.bind(this))\n window.addEventListener('mouseup', this.onMouseUp.bind(this))\n window.addEventListener('touchend', this.onMouseUp.bind(this))\n }\n\n computeMaterial (\n rules: boolean[],\n materials: THREE.MeshBasicMaterial[],\n defaultMaterial: THREE.MeshBasicMaterial,\n logoMaterial?: THREE.MeshBasicMaterial,\n ) {\n return rules.map((item, index) => item ? logoMaterial || materials[index] : defaultMaterial)\n }\n\n async initCube () {\n this.mesh && this.scene.remove(this.mesh)\n this.children = []\n this.coordinate = []\n const mesh = this.mesh = new THREE.Group()\n this.scene.add(mesh)\n // 小立方体\n const { level, gutter, radius, cubeSize: size } = debug\n const w = level, h = level, d = level\n const offsetWidth = w * size / 2 - size / 2\n const offsetHeight = h * size / 2 - size / 2\n const offsetDepth = d * size / 2 - size / 2\n const geometry = new THREE.BoxGeometry(size, size, size)\n // 材质\n const materials = colors.map(color => {\n const canvas = getFaceColor(color, radius, gutter, debug.gutterColor)\n const texture = new THREE.Texture(canvas)\n texture.needsUpdate = true\n texture.minFilter = THREE.NearestFilter\n texture.generateMipmaps = false\n return new THREE.MeshBasicMaterial({ map: texture })\n })\n const defaultMaterial = new THREE.MeshBasicMaterial({ color: debug.gutterColor })\n for (let i = 0; i < d; i++) {\n for (let j = 0; j < w * h; j++) {\n const index = i * w * h + j\n const currMaterial = this.computeMaterial([\n (j + 1) % w === 0,\n j % w === 0,\n i === d - 1,\n i === 0,\n j + w >= w * h,\n j < w,\n ], materials, defaultMaterial)\n const mesh = new THREE.Mesh(geometry, currMaterial)\n mesh.position.set(\n (j % w) * size - offsetWidth,\n size * i - offsetDepth,\n (j / w >> 0) * size - offsetHeight,\n )\n mesh.name = String(index)\n this.mesh.add(mesh)\n this.children.push(mesh)\n this.coordinate[index] = mesh.position.clone()\n }\n }\n // 外壳\n const outside = new THREE.Mesh(\n new THREE.BoxGeometry(\n size * w + 0.01,\n size * d + 0.01,\n size * h + 0.01\n ),\n new THREE.MeshBasicMaterial({\n color: '#fff',\n opacity: 0,\n transparent: true\n })\n )\n mesh.add(outside)\n // // 自动打乱\n // this.shuffleCube()\n }\n\n // 旋转逻辑\n computeRotation () {\n const sub = this.movePoint?.sub(this.startPoint!)\n if (!sub) return\n let minAngle = Infinity, minIndex = 0, planeNormalIndex: number = NaN\n Object.values(AxesVec3).forEach((vec3, index) => {\n const angle = sub.angleTo(vec3)\n if (vec3.angleTo(this.startPlane!) === 0) {\n planeNormalIndex = index\n }\n if (angle < minAngle) {\n minAngle = angle\n minIndex = index\n }\n })\n const direction = planeNormalIndex % 2 === 0 ? 1 : -1\n const planeNormalKey = planeNormalIndex / 2 >> 0\n const planeNormal = AxesEnum[planeNormalKey]\n // console.log('平面法向量', planeNormal, planeNormalIndex)\n const rotationVector = ['x+', 'x-', 'y+', 'y-', 'z+', 'z-'][minIndex]\n // console.log('旋转向量', rotationVector)\n let rotationAxis\n if (planeNormal === 'x') {\n if (rotationVector === 'y-') rotationAxis = 'z+'\n if (rotationVector === 'y+') rotationAxis = 'z-'\n if (rotationVector === 'z+') rotationAxis = 'y+'\n if (rotationVector === 'z-') rotationAxis = 'y-'\n }\n if (planeNormal === 'y') {\n if (rotationVector === 'x+') rotationAxis = 'z+'\n if (rotationVector === 'x-') rotationAxis = 'z-'\n if (rotationVector === 'z+') rotationAxis = 'x-'\n if (rotationVector === 'z-') rotationAxis = 'x+'\n }\n if (planeNormal === 'z') {\n if (rotationVector === 'y-') rotationAxis = 'x-'\n if (rotationVector === 'y+') rotationAxis = 'x+'\n if (rotationVector === 'x-') rotationAxis = 'y+'\n if (rotationVector === 'x+') rotationAxis = 'y-'\n }\n if (!rotationAxis) return\n this.rotateCube(this.touchCube!, rotationAxis as keyof typeof AxesVec3, direction)\n }\n\n // 根据立方体索引反推层数\n getStoreyByIndex (axis: 'x' | 'y' | 'z', i: number) {\n const lev = debug.level\n const squa = lev ** 2\n const _k = lev - 1\n const rules = {\n x: (i: number) => _k - ((i % squa) % lev),\n y: (i: number) => _k - (i / squa >> 0),\n z: (i: number) => _k - ((i % squa) / lev >> 0)\n }\n return rules[axis](i)\n }\n\n // 根据层数获取立方体\n getCubesByStorey (axis: 'x' | 'y' | 'z', storey = 0, sort = 1) {\n const lev = debug.level\n const squa = lev ** 2\n const rules: {\n [key in typeof axis]: ((n: unknown, i: number) => boolean)[]\n } = {\n x: [],\n y: [],\n z: [],\n }\n for (let k = 0; k < lev; k++) {\n const _k = lev - k - 1\n rules['x'][k] = (n, i) => i % lev === _k\n rules['y'][k] = (n, i) => i / squa >> 0 === _k\n rules['z'][k] = (n, i) => (i % 9) / lev >> 0 === _k\n }\n storey = sort > 0 ? storey : lev - storey - 1\n const rule = rules[axis][storey]\n return this.children.filter(rule)\n }\n\n /**\n * 旋转逻辑\n */\n async rotateCube (touchCube: THREE.Mesh, rotationAxis: keyof typeof AxesVec3, direction: 1 | -1) {\n if (this.isRotating) return\n this.isRotating = true\n const vec3 = AxesVec3[rotationAxis]\n const axis = rotationAxis.slice(0, 1)\n if (!vec3) return this.clearState()\n const allPromise: Promise[] = []\n this.children.forEach(item => {\n if (touchCube.position[axis] === item.position[axis]) {\n allPromise.push(this.moveCube(item, vec3, direction))\n }\n })\n await Promise.all(allPromise)\n this.clearState()\n this.resetCubes()\n }\n\n clearState () {\n this.isRotating = false\n this.startPoint = null\n this.movePoint = null\n }\n\n // 移动小方块\n moveCube (cube: THREE.Mesh, vec3: THREE.Vector3, direction: 1 | -1): Promise {\n return new Promise(resolve => {\n let prev = 0, data = { progress: 0 }\n anime({\n targets: data,\n duration: debug.rotateTime,\n progress: 1,\n easing: 'easeOutQuad',\n update: () => {\n const interval = data.progress - prev\n prev = data.progress\n const matrix = rotateAroundWorldAxis(\n new THREE.Vector3(0, 0, 0),\n new THREE.Vector3(-vec3.x * direction, -vec3.y * direction, -vec3.z * direction),\n interval * Math.PI / 2\n )\n cube.applyMatrix4(matrix)\n },\n complete: () => {\n const p = cube.position\n cube.scale.set(1, 1, 1)\n cube.position.set(Math.round(p.x), Math.round(p.y), Math.round(p.z))\n resolve()\n }\n })\n })\n }\n\n resetCubes () {\n const map = {}\n const toString = (vec3: THREE.Vector3) => `x${vec3.x}y${vec3.y}z${vec3.z}`\n this.children.forEach(cube => map[toString(cube.position)] = cube)\n this.coordinate.forEach((vec3, index) => {\n this.children[index] = map[toString(vec3)]\n })\n }\n\n getMouseSite (e: MouseEvent | TouchEvent) {\n const x = (e['touches'] ? e['touches'][0] : e).clientX\n const y = (e['touches'] ? e['touches'][0] : e).clientY\n this.mouse.x = (x / this.width - 0.5) * 2\n this.mouse.y = -(y / this.height - 0.5) * 2\n }\n\n onMouseDown (e: MouseEvent | TouchEvent) {\n this.getMouseSite(e)\n this.raycaster.setFromCamera(this.mouse, this.camera)\n const intersects = this.raycaster.intersectObjects([this.mesh])\n this.controls.enabled = !intersects.length\n // 兼容移动端\n this.onMouseMove(e)\n // 旋转\n if (this.intersect1 && this.intersect2 && !this.isRotating) {\n // 起始点\n this.startPoint = this.intersect1.point\n // 起始平面\n this.startPlane = this.intersect1.face?.normal\n // 触摸的小方块\n this.touchCube = this.intersect2.object as THREE.Mesh\n }\n }\n\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (!this.mesh) return\n this.getMouseSite(e)\n this.raycaster.setFromCamera(this.mouse, this.camera)\n const intersects = this.raycaster.intersectObjects(this.mesh.children)\n this.intersect1 = intersects[0]\n this.intersect2 = intersects[1]\n if (this.intersect1 && !this.isRotating && this.startPoint) {\n this.movePoint = this.intersect1.point\n if (this.movePoint.distanceTo(this.startPoint) > debug.cubeSize / 5) {\n this.computeRotation()\n }\n }\n }\n\n onMouseUp (e: MouseEvent | TouchEvent) {\n this.startPoint = null\n this.movePoint = null\n this.controls.enabled = true\n }\n\n async shuffleCube () {\n if (this.isShuffling) return\n this.isShuffling = true\n // this.controls.autoRotate = true\n this['inp1'].disabled = true\n this['btn1'].disabled = true\n this['btn2'].disabled = true\n debug.rotateTime = 150\n const count = debug.level * 5 + 10\n const children = this.children.slice()\n for (let i = 0; i < count; i++) {\n const axis = ['x', 'y', 'z'][i % 3]\n await this.rotateCube(\n children[Math.random() * children.length >> 0],\n `${axis}${Math.random() - 0.5 > 0 ? '+' : '-'}` as keyof typeof AxesVec3,\n Math.random() - 0.5 > 0 ? 1 : -1\n )\n }\n this.isShuffling = false\n // this.controls.autoRotate = false\n this['inp1'].disabled = false\n this['btn1'].disabled = false\n this['btn2'].disabled = false\n debug.rotateTime = 300\n }\n\n initDebug () {\n const f1 = pane.addFolder({ title: '参数' })\n this['inp1'] = f1.addInput(debug, 'level', {\n label: '难度',\n options: {\n '二阶': 2,\n '三阶': 3,\n '四阶': 4,\n '五阶': 5,\n '六阶': 6,\n '七阶': 7,\n }\n }).on('change', (ev: any) => {\n const lev = ev.value\n this.initCube()\n this.camera.position.set(lev * 5, lev * 5, lev * 5)\n this.camera.lookAt(0, 0, 0)\n })\n f1.addInput(debug, 'radius', {\n label: '圆角',\n min: 0,\n max: 100,\n }).on('change', () => {\n this.initCube()\n })\n f1.addInput(debug, 'gutter', {\n label: '缝隙',\n min: 0,\n max: 50,\n }).on('change', () => {\n this.initCube()\n })\n f1.addInput(debug, 'gutterColor', {\n label: '缝隙颜色',\n }).on('change', () => {\n this.initCube()\n })\n const f2 = pane.addFolder({ title: '操作' })\n this['btn1'] = f2.addButton({\n title: 'Reset 重置',\n }).on('click', () => {\n this.initCube()\n })\n this['btn2'] = f2.addButton({\n title: 'Shuffle 打乱',\n }).on('click', () => {\n this.shuffleCube()\n })\n this['btn3'] = f2.addButton({\n title: 'Solve 还原',\n disabled: true\n }).on('click', () => {\n this.shuffleCube()\n })\n // f2.addButton({ title: 'R' }).on('click', () => {\n // this.rotateCube(this.children[26], 'x+', 1)\n // })\n // f2.addButton({ title: 'R\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'x+', -1)\n // })\n // f2.addButton({ title: 'L' }).on('click', () => {\n // this.rotateCube(this.children[24], 'x-', 1)\n // })\n // f2.addButton({ title: 'L\\'' }).on('click', () => {\n // this.rotateCube(this.children[24], 'x-', -1)\n // })\n // f2.addButton({ title: 'U' }).on('click', () => {\n // this.rotateCube(this.children[26], 'y+', 1)\n // })\n // f2.addButton({ title: 'U\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'y+', -1)\n // })\n // f2.addButton({ title: 'D' }).on('click', () => {\n // this.rotateCube(this.children[8], 'y-', 1)\n // })\n // f2.addButton({ title: 'D\\'' }).on('click', () => {\n // this.rotateCube(this.children[8], 'y-', -1)\n // })\n // f2.addButton({ title: 'F' }).on('click', () => {\n // this.rotateCube(this.children[26], 'z+', 1)\n // })\n // f2.addButton({ title: 'F\\'' }).on('click', () => {\n // this.rotateCube(this.children[26], 'z+', -1)\n // })\n // f2.addButton({ title: 'B' }).on('click', () => {\n // this.rotateCube(this.children[20], 'z-', 1)\n // })\n // f2.addButton({ title: 'B\\'' }).on('click', () => {\n // this.rotateCube(this.children[20], 'z-', -1)\n // })\n // f2.addButton({ title: 'x' }).on('click', async () => {\n // if (this.isRotating) return\n // this.isRotating = true\n // const vec3 = AxesVec3['x+']\n // const direction = 1\n // const allPromise: Promise[] = []\n // this.children.forEach(item => {\n // allPromise.push(this.moveCube(item, vec3, direction))\n // })\n // await Promise.all(allPromise)\n // this.isRotating = false\n // this.clearState()\n // this.resetCubes()\n // })\n }\n}\n"],"names":["THREE.WebGLRenderer","THREE.Scene","THREE.PerspectiveCamera","THREE.AmbientLight","THREE.Vector3","THREE.Matrix4","this","Pane","THREE.Vector2","THREE.Raycaster","THREE.Group","THREE.BoxGeometry","THREE.Texture","THREE.NearestFilter","THREE.MeshBasicMaterial","THREE.Mesh"],"mappings":"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CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;IACrE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrE;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;IACA,EAAE,EAAE,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C;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AACnI;IACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;IACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;IACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH;IACA,EAAE,QAAQ,EAAE,UAAU;IACtB,EAAE,SAAS,EAAE,KAAK;IAClB,EAAE,UAAU,EAAE,KAAK;AACnB;IACA,EAAE,EAAE,CAAC;AACL;IACA,CAAC,OAAO,cAAc,CAAC;AACvB;IACA,CAAC;AACD;IACA,SAAS,sBAAsB,GAAG;AAClC;IACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;IACA,CAAC;AACD;IACA,SAAS,aAAa,GAAG;AACzB;IACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;IACA,CAAC;AACD;IACA,SAAS,eAAe,EAAE,QAAQ,GAAG;AACrC;IACA,CAAC,IAAI,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAChC;IACA,CAAC,IAAI,cAAc,GAAG,IAAI,CAAC;AAC3B;IA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"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index c40c763..01c2f2d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -68,18 +68,18 @@ export default class CreepCube extends Base { const offsetDepth = d * size / 2 - size / 2 const geometry = new THREE.BoxGeometry(size, size, size) // 材质 + const materials = colors.map(color => { + const canvas = getFaceColor(color, radius, gutter, debug.gutterColor) + const texture = new THREE.Texture(canvas) + texture.needsUpdate = true + texture.minFilter = THREE.NearestFilter + texture.generateMipmaps = false + return new THREE.MeshBasicMaterial({ map: texture }) + }) const defaultMaterial = new THREE.MeshBasicMaterial({ color: debug.gutterColor }) for (let i = 0; i < d; i++) { for (let j = 0; j < w * h; j++) { const index = i * w * h + j -const materials = colors.map(color => { - const canvas = getFaceColor(color, radius, gutter, debug.gutterColor, String(index)) - const texture = new THREE.Texture(canvas) - texture.needsUpdate = true - texture.minFilter = THREE.NearestFilter - texture.generateMipmaps = false - return new THREE.MeshBasicMaterial({ map: texture }) -}) const currMaterial = this.computeMaterial([ (j + 1) % w === 0, j % w === 0,