{"version":3,"sources":["/usr/src/app/node_modules/metro-bundler/src/Resolver/polyfills/prelude_dev.js","/usr/src/app/node_modules/metro-bundler/src/Resolver/polyfills/require.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/Object.es6.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/console.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/error-guard.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/Number.es6.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/String.prototype.es6.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/Array.prototype.es6.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/Array.es6.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/Object.es7.js","/usr/src/app/node_modules/react-native/Libraries/polyfills/babelHelpers.js","/usr/src/app/vr/client.js","/usr/src/app/node_modules/react-vr-web/ReactVR.js","/usr/src/app/node_modules/react-vr-web/js/bundleFromLocation.js","/usr/src/app/node_modules/react-vr-web/js/createRootView.js","/usr/src/app/node_modules/react-vr-web/js/ReactNativeContext.js","/usr/src/app/node_modules/react-vr-web/js/Modules/AndroidConstants.js","/usr/src/app/node_modules/react-vr-web/js/Modules/Module.js","/usr/src/app/node_modules/react-vr-web/js/Modules/AsyncLocalStorage.js","/usr/src/app/node_modules/react-vr-web/js/Modules/ControllerInfo.js","/usr/src/app/node_modules/react-vr-web/js/Modules/DeviceInfo.js","/usr/src/app/node_modules/react-vr-web/js/Modules/ExternalAssets.js","/usr/src/app/node_modules/react-vr-web/js/Modules/GlyphTextures.js","/usr/src/app/node_modules/react-vr-web/js/Modules/History.js","/usr/src/app/node_modules/react-vr-web/js/Modules/LinkingManager.js","/usr/src/app/node_modules/react-vr-web/js/Modules/Location.js","/usr/src/app/node_modules/react-vr-web/js/Modules/LocationObserver.js","/usr/src/app/node_modules/react-vr-web/js/Modules/Networking.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RCTResourceManager.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RCTInputControls.js","/usr/src/app/node_modules/ovrui/index.js","/usr/src/app/node_modules/ovrui/lib/OVRUI.js","/usr/src/app/node_modules/ovrui/lib/Control/AppControls.js","/usr/src/app/node_modules/ovrui/lib/Control/DeviceOrientationControls.js","/usr/src/app/node_modules/ovrui/lib/ThreeShim.js","/usr/src/app/node_modules/three/build/three.js","/usr/src/app/node_modules/ovrui/lib/Control/MobilePanControls.js","/usr/src/app/node_modules/ovrui/lib/Control/MousePanControls.js","/usr/src/app/node_modules/ovrui/lib/Control/VRControls.js","/usr/src/app/node_modules/ovrui/lib/Control/VREffect.js","/usr/src/app/node_modules/ovrui/lib/SDFFont/SDFFont.js","/usr/src/app/node_modules/ovrui/lib/SDFFont/DefaultFont.js","/usr/src/app/node_modules/ovrui/lib/Materials/StereoBasicTextureMaterial.js","/usr/src/app/node_modules/ovrui/lib/Materials/StereoTextureUniforms.js","/usr/src/app/node_modules/ovrui/lib/Materials/StereoShaderLib.js","/usr/src/app/node_modules/ovrui/lib/UIView/GuiSys.js","/usr/src/app/node_modules/ovrui/lib/UIView/GuiSysEvent.js","/usr/src/app/node_modules/ovrui/lib/Inputs/GamepadEventInput.js","/usr/src/app/node_modules/ovrui/lib/Inputs/EventInput.js","/usr/src/app/node_modules/ovrui/lib/Inputs/KeyboardEventInput.js","/usr/src/app/node_modules/ovrui/lib/Inputs/MouseEventInput.js","/usr/src/app/node_modules/ovrui/lib/Inputs/TouchEventInput.js","/usr/src/app/node_modules/ovrui/lib/Inputs/MouseRayCaster.js","/usr/src/app/node_modules/ovrui/lib/Inputs/RayCaster.js","/usr/src/app/node_modules/ovrui/lib/UIView/UIViewUtil.js","/usr/src/app/node_modules/ovrui/lib/UIView/UIView.js","/usr/src/app/node_modules/ovrui/lib/FourByFourRect/VectorGeometry.js","/usr/src/app/node_modules/ovrui/lib/Player/Player.js","/usr/src/app/node_modules/ovrui/lib/Player/OculusPlayer.js","/usr/src/app/node_modules/ovrui/lib/Player/Overlay.js","/usr/src/app/node_modules/ovrui/lib/Player/setStyles.js","/usr/src/app/node_modules/ovrui/lib/Player/Glyphs.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RCTHeadModel.js","/usr/src/app/node_modules/react-vr-web/js/Modules/RCTVideoModule.js","/usr/src/app/node_modules/react-vr-web/js/Video/VRVideoPlayer.js","/usr/src/app/node_modules/react-vr-web/js/Video/BasicVideoPlayer.js","/usr/src/app/node_modules/react-vr-web/js/Video/getSupportedFormats.js","/usr/src/app/node_modules/react-vr-web/js/Video/VRVideoComponent.js","/usr/src/app/node_modules/react-vr-web/js/Events/MediaEvent.js","/usr/src/app/node_modules/react-vr-web/js/Modules/RCTAudioModule.js","/usr/src/app/node_modules/react-vr-web/js/Audio/getSupportedFormats.js","/usr/src/app/node_modules/react-vr-web/js/Audio/VRAudioComponent.js","/usr/src/app/node_modules/react-vr-web/js/Audio/VRAudioBufferSource.js","/usr/src/app/node_modules/react-vr-web/js/Audio/VRAudioBufferManager.js","/usr/src/app/node_modules/react-vr-web/js/Audio/MediaError.js","/usr/src/app/node_modules/react-vr-web/js/Audio/VRAudioContext.js","/usr/src/app/node_modules/react-vr-web/js/Utils/TextureManager.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RefCountCache.js","/usr/src/app/node_modules/react-vr-web/js/Modules/Timing.js","/usr/src/app/node_modules/react-vr-web/js/Modules/UIManager.js","/usr/src/app/node_modules/react-vr-web/js/Views/Box.js","/usr/src/app/node_modules/react-vr-web/js/Views/BaseMesh.js","/usr/src/app/node_modules/react-vr-web/js/Views/BaseView.js","/usr/src/app/node_modules/react-vr-web/js/Utils/isPositive.js","/usr/src/app/node_modules/react-vr-web/js/Utils/Yoga.bundle.js","/usr/src/app/node_modules/react-vr-web/js/Utils/extractURL.js","/usr/src/app/node_modules/react-vr-web/js/Utils/merge.js","/usr/src/app/node_modules/react-vr-web/js/Views/Cylinder.js","/usr/src/app/node_modules/react-vr-web/js/Views/Plane.js","/usr/src/app/node_modules/react-vr-web/js/Views/Sphere.js","/usr/src/app/node_modules/react-vr-web/js/Views/Image.js","/usr/src/app/node_modules/react-vr-web/js/Views/View.js","/usr/src/app/node_modules/react-vr-web/js/Views/Pano.js","/usr/src/app/node_modules/react-vr-web/js/Utils/StereoOffsetRepeats.js","/usr/src/app/node_modules/react-vr-web/js/Utils/HPano.js","/usr/src/app/node_modules/react-vr-web/js/Utils/CubePano.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RCTBindedResource.js","/usr/src/app/node_modules/react-vr-web/js/Views/Prefetch.js","/usr/src/app/node_modules/react-vr-web/js/Views/LiveEnvCamera.js","/usr/src/app/node_modules/react-vr-web/js/Views/Model.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/ModelLoaderRegistry.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/ObjModelLoader.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/WavefrontOBJ/MTLLoader.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/WavefrontOBJ/MTLParser.js","/usr/src/app/node_modules/react-vr-web/js/Utils/fetchResource.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/WavefrontOBJ/OBJLoader.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/WavefrontOBJ/OBJParser.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/WavefrontOBJ/OBJGroup.js","/usr/src/app/node_modules/react-vr-web/js/Loaders/GLTF2ModelLoader.js","/usr/src/app/node_modules/three-gltf2-loader/lib/main.js","/usr/src/app/node_modules/react-vr-web/js/Views/Scene.js","/usr/src/app/node_modules/react-vr-web/js/Views/Sound.js","/usr/src/app/node_modules/react-vr-web/js/Views/Text.js","/usr/src/app/node_modules/react-vr-web/js/Views/RawText.js","/usr/src/app/node_modules/react-vr-web/js/Views/Video.js","/usr/src/app/node_modules/react-vr-web/js/Utils/RCTVideoPlayer.js","/usr/src/app/node_modules/react-vr-web/js/Views/VideoPano.js","/usr/src/app/node_modules/react-vr-web/js/Views/AmbientLight.js","/usr/src/app/node_modules/react-vr-web/js/Views/DirectionalLight.js","/usr/src/app/node_modules/react-vr-web/js/Views/PointLight.js","/usr/src/app/node_modules/react-vr-web/js/Views/SpotLight.js","/usr/src/app/node_modules/react-vr-web/js/Views/CylindricalPanel.js","/usr/src/app/node_modules/react-vr-web/js/Views/QuadPanel.js","/usr/src/app/node_modules/react-vr-web/js/Modules/WebSocketModule.js","/usr/src/app/node_modules/react-vr-web/js/Modules/ReactVRConstants.js","/usr/src/app/node_modules/react-vr-web/js/Modules/RCTExceptionsManager.js","/usr/src/app/node_modules/react-vr-web/js/Modules/RCTSourceCode.js","/usr/src/app/node_modules/react-vr-web/js/Bridge/WebWorkerBridge.js","/usr/src/app/node_modules/react-vr-web/js/Bridge/Bridge.js","/usr/src/app/node_modules/react-vr-web/js/VRInstance.js","/usr/src/app/node_modules/react-vr-web/js/Video/OVRVideo.js"],"sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @polyfill\n */\n\n/* eslint-disable strict */\n\nglobal.__DEV__ = true;\n\nglobal.__BUNDLE_START_TIME__ = global.nativePerformanceNow ?\nglobal.nativePerformanceNow() :\nDate.now();","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @polyfill\n * \n */\n\n'use strict';function _toConsumableArray(arr) {if (Array.isArray(arr)) {for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];return arr2;} else {return Array.from(arr);}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nglobal.require = require;\nglobal.__d = define;\n\nconst modules = Object.create(null);\nif (__DEV__) {\n  var verboseNamesToModuleIds = Object.create(null);\n}\n\nfunction define(\nfactory,\nmoduleId,\ndependencyMap)\n{\n  if (moduleId in modules) {\n    // prevent repeated calls to `global.nativeRequire` to overwrite modules\n    // that are already loaded\n    return;\n  }\n  modules[moduleId] = {\n    dependencyMap,\n    exports: undefined,\n    factory,\n    hasError: false,\n    isInitialized: false };\n\n  if (__DEV__) {\n    // HMR\n    modules[moduleId].hot = createHotReloadingObject();\n\n    // DEBUGGABLE MODULES NAMES\n    // we take `verboseName` from `arguments` to avoid an unused named parameter\n    // in `define` in production.\n    const verboseName = arguments[3];\n    if (verboseName) {\n      modules[moduleId].verboseName = verboseName;\n      verboseNamesToModuleIds[verboseName] = moduleId;\n    }\n  }\n}\n\nfunction require(moduleId) {\n  if (__DEV__ && typeof moduleId === 'string') {\n    const verboseName = moduleId;\n    moduleId = verboseNamesToModuleIds[moduleId];\n    if (moduleId == null) {\n      throw new Error(`Unknown named module: '${verboseName}'`);\n    } else {\n      console.warn(\n      `Requiring module '${verboseName}' by name is only supported for ` +\n      'debugging purposes and will BREAK IN PRODUCTION!');\n\n    }\n  }\n\n  //$FlowFixMe: at this point we know that moduleId is a number\n  const moduleIdReallyIsNumber = moduleId;\n  const module = modules[moduleIdReallyIsNumber];\n  return module && module.isInitialized ?\n  module.exports :\n  guardedLoadModule(moduleIdReallyIsNumber, module);\n}\n\nlet inGuard = false;\nfunction guardedLoadModule(moduleId, module) {\n  if (!inGuard && global.ErrorUtils) {\n    inGuard = true;\n    let returnValue;\n    try {\n      returnValue = loadModuleImplementation(moduleId, module);\n    } catch (e) {\n      global.ErrorUtils.reportFatalError(e);\n    }\n    inGuard = false;\n    return returnValue;\n  } else {\n    return loadModuleImplementation(moduleId, module);\n  }\n}\n\nfunction loadModuleImplementation(moduleId, module) {\n  const nativeRequire = global.nativeRequire;\n  if (!module && nativeRequire) {\n    nativeRequire(moduleId);\n    module = modules[moduleId];\n  }\n\n  if (!module) {\n    throw unknownModuleError(moduleId);\n  }\n\n  if (module.hasError) {\n    throw moduleThrewError(moduleId, module.error);\n  }\n\n  // `require` calls int  the require polyfill itself are not analyzed and\n  // replaced so that they use numeric module IDs.\n  // The systrace module will expose itself on the require function so that\n  // it can be used here.\n  // TODO(davidaurelio) Scan polyfills for dependencies, too (t9759686)\n  if (__DEV__) {var\n    Systrace = require.Systrace;\n  }\n\n  // We must optimistically mark module as initialized before running the\n  // factory to keep any require cycles inside the factory from causing an\n  // infinite require loop.\n  module.isInitialized = true;\n  const exports = module.exports = {};var _module =\n  module;const factory = _module.factory,dependencyMap = _module.dependencyMap;\n  try {\n    if (__DEV__) {\n      // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n      Systrace.beginEvent('JS_require_' + (module.verboseName || moduleId));\n    }\n\n    const moduleObject = { exports };\n    if (__DEV__ && module.hot) {\n      moduleObject.hot = module.hot;\n    }\n\n    // keep args in sync with with defineModuleCode in\n    // packager/src//Resolver/index.js\n    // and packager/src//ModuleGraph/worker.js\n    factory(global, require, moduleObject, exports, dependencyMap);\n\n    // avoid removing factory in DEV mode as it breaks HMR\n    if (!__DEV__) {\n      // $FlowFixMe: This is only sound because we never access `factory` again\n      module.factory = undefined;\n      module.dependencyMap = undefined;\n    }\n\n    if (__DEV__) {\n      // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n      Systrace.endEvent();\n    }\n    return module.exports = moduleObject.exports;\n  } catch (e) {\n    module.hasError = true;\n    module.error = e;\n    module.isInitialized = false;\n    module.exports = undefined;\n    throw e;\n  }\n}\n\nfunction unknownModuleError(id) {\n  let message = 'Requiring unknown module \"' + id + '\".';\n  if (__DEV__) {\n    message +=\n    'If you are sure the module is there, try restarting the packager. ' +\n    'You may also want to run `npm install`, or `yarn` (depending on your environment).';\n  }\n  return Error(message);\n}\n\nfunction moduleThrewError(id, error) {\n  const displayName = __DEV__ && modules[id] && modules[id].verboseName || id;\n  return Error('Requiring module \"' + displayName + '\", which threw an exception: ' + error);\n}\n\nif (__DEV__) {\n  require.Systrace = { beginEvent: () => {}, endEvent: () => {} };\n\n  // HOT MODULE RELOADING\n  var createHotReloadingObject = function () {\n    const hot = {\n      acceptCallback: null,\n      accept: callback => {hot.acceptCallback = callback;} };\n\n    return hot;\n  };\n\n  const acceptAll = function (\n  dependentModules,\n  inverseDependencies)\n  {\n    if (!dependentModules || dependentModules.length === 0) {\n      return true;\n    }\n\n    const notAccepted = dependentModules.filter(\n    module => !accept(module, /*factory*/undefined, inverseDependencies));\n\n    const parents = [];\n    for (let i = 0; i < notAccepted.length; i++) {\n      // if the module has no parents then the change cannot be hot loaded\n      if (inverseDependencies[notAccepted[i]].length === 0) {\n        return false;\n      }\n\n      parents.push.apply(parents, _toConsumableArray(inverseDependencies[notAccepted[i]]));\n    }\n\n    return acceptAll(parents, inverseDependencies);\n  };\n\n  const accept = function (\n  id,\n  factory,\n  inverseDependencies)\n  {\n    const mod = modules[id];\n\n    if (!mod && factory) {// new modules need a factory\n      define(factory, id);\n      return true; // new modules don't need to be accepted\n    }const\n\n    hot = mod.hot;\n    if (!hot) {\n      console.warn(\n      'Cannot accept module because Hot Module Replacement ' +\n      'API was not installed.');\n\n      return false;\n    }\n\n    // replace and initialize factory\n    if (factory) {\n      mod.factory = factory;\n    }\n    mod.hasError = false;\n    mod.isInitialized = false;\n    require(id);\n\n    if (hot.acceptCallback) {\n      hot.acceptCallback();\n      return true;\n    } else {\n      // need to have inverseDependencies to bubble up accept\n      if (!inverseDependencies) {\n        throw new Error('Undefined `inverseDependencies`');\n      }\n\n      // accept parent modules recursively up until all siblings are accepted\n      return acceptAll(inverseDependencies[id], inverseDependencies);\n    }\n  };\n\n  global.__accept = accept;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.es6\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable strict */\n\n// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n// This is only needed for iOS 8 and current Android JSC.\n\nObject.assign = function(target, sources) {\n  if (__DEV__) {\n    if (target == null) {\n      throw new TypeError('Object.assign target cannot be null or undefined');\n    }\n    if (typeof target !== 'object' && typeof target !== 'function') {\n      throw new TypeError(\n        'In this environment the target of assign MUST be an object.' +\n        'This error is a performance optimization and not spec compliant.'\n      );\n    }\n  }\n\n  for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n    var nextSource = arguments[nextIndex];\n    if (nextSource == null) {\n      continue;\n    }\n\n    if (__DEV__) {\n      if (typeof nextSource !== 'object' &&\n          typeof nextSource !== 'function') {\n        throw new TypeError(\n          'In this environment the sources for assign MUST be an object.' +\n          'This error is a performance optimization and not spec compliant.'\n        );\n      }\n    }\n\n    // We don't currently support accessors nor proxies. Therefore this\n    // copy cannot throw. If we ever supported this then we must handle\n    // exceptions and side-effects.\n\n    for (var key in nextSource) {\n      if (__DEV__) {\n        var hasOwnProperty = Object.prototype.hasOwnProperty;\n        if (!hasOwnProperty.call(nextSource, key)) {\n          throw new TypeError(\n            'One of the sources for assign has an enumerable key on the ' +\n            'prototype chain. Are you trying to assign a prototype property? ' +\n            'We don\\'t allow it, as this is an edge case that we do not support. ' +\n            'This error is a performance optimization and not spec compliant.'\n          );\n        }\n      }\n      target[key] = nextSource[key];\n    }\n  }\n\n  return target;\n};\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule console\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable */\n\n/**\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n */\nconst inspect = (function() {\n  // Copyright Joyent, Inc. and other Node contributors.\n  //\n  // Permission is hereby granted, free of charge, to any person obtaining a\n  // copy of this software and associated documentation files (the\n  // \"Software\"), to deal in the Software without restriction, including\n  // without limitation the rights to use, copy, modify, merge, publish,\n  // distribute, sublicense, and/or sell copies of the Software, and to permit\n  // persons to whom the Software is furnished to do so, subject to the\n  // following conditions:\n  //\n  // The above copyright notice and this permission notice shall be included\n  // in all copies or substantial portions of the Software.\n  //\n  // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  // USE OR OTHER DEALINGS IN THE SOFTWARE.\n  //\n  // https://github.com/joyent/node/blob/master/lib/util.js\n\n  function inspect(obj, opts) {\n    var ctx = {\n      seen: [],\n      stylize: stylizeNoColor\n    };\n    return formatValue(ctx, obj, opts.depth);\n  }\n\n  function stylizeNoColor(str, styleType) {\n    return str;\n  }\n\n  function arrayToHash(array) {\n    var hash = {};\n\n    array.forEach(function(val, idx) {\n      hash[val] = true;\n    });\n\n    return hash;\n  }\n\n\n  function formatValue(ctx, value, recurseTimes) {\n    // Primitive types cannot have properties\n    var primitive = formatPrimitive(ctx, value);\n    if (primitive) {\n      return primitive;\n    }\n\n    // Look up the keys of the object.\n    var keys = Object.keys(value);\n    var visibleKeys = arrayToHash(keys);\n\n    // IE doesn't make error fields non-enumerable\n    // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n    if (isError(value)\n        && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n      return formatError(value);\n    }\n\n    // Some type of object without properties can be shortcutted.\n    if (keys.length === 0) {\n      if (isFunction(value)) {\n        var name = value.name ? ': ' + value.name : '';\n        return ctx.stylize('[Function' + name + ']', 'special');\n      }\n      if (isRegExp(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n      }\n      if (isDate(value)) {\n        return ctx.stylize(Date.prototype.toString.call(value), 'date');\n      }\n      if (isError(value)) {\n        return formatError(value);\n      }\n    }\n\n    var base = '', array = false, braces = ['{', '}'];\n\n    // Make Array say that they are Array\n    if (isArray(value)) {\n      array = true;\n      braces = ['[', ']'];\n    }\n\n    // Make functions say that they are functions\n    if (isFunction(value)) {\n      var n = value.name ? ': ' + value.name : '';\n      base = ' [Function' + n + ']';\n    }\n\n    // Make RegExps say that they are RegExps\n    if (isRegExp(value)) {\n      base = ' ' + RegExp.prototype.toString.call(value);\n    }\n\n    // Make dates with properties first say the date\n    if (isDate(value)) {\n      base = ' ' + Date.prototype.toUTCString.call(value);\n    }\n\n    // Make error with message first say the error\n    if (isError(value)) {\n      base = ' ' + formatError(value);\n    }\n\n    if (keys.length === 0 && (!array || value.length == 0)) {\n      return braces[0] + base + braces[1];\n    }\n\n    if (recurseTimes < 0) {\n      if (isRegExp(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n      } else {\n        return ctx.stylize('[Object]', 'special');\n      }\n    }\n\n    ctx.seen.push(value);\n\n    var output;\n    if (array) {\n      output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n    } else {\n      output = keys.map(function(key) {\n        return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n      });\n    }\n\n    ctx.seen.pop();\n\n    return reduceToSingleString(output, base, braces);\n  }\n\n\n  function formatPrimitive(ctx, value) {\n    if (isUndefined(value))\n      return ctx.stylize('undefined', 'undefined');\n    if (isString(value)) {\n      var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                               .replace(/'/g, \"\\\\'\")\n                                               .replace(/\\\\\"/g, '\"') + '\\'';\n      return ctx.stylize(simple, 'string');\n    }\n    if (isNumber(value))\n      return ctx.stylize('' + value, 'number');\n    if (isBoolean(value))\n      return ctx.stylize('' + value, 'boolean');\n    // For some reason typeof null is \"object\", so special case here.\n    if (isNull(value))\n      return ctx.stylize('null', 'null');\n  }\n\n\n  function formatError(value) {\n    return '[' + Error.prototype.toString.call(value) + ']';\n  }\n\n\n  function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n    var output = [];\n    for (var i = 0, l = value.length; i < l; ++i) {\n      if (hasOwnProperty(value, String(i))) {\n        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n            String(i), true));\n      } else {\n        output.push('');\n      }\n    }\n    keys.forEach(function(key) {\n      if (!key.match(/^\\d+$/)) {\n        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n            key, true));\n      }\n    });\n    return output;\n  }\n\n\n  function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n    var name, str, desc;\n    desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n    if (desc.get) {\n      if (desc.set) {\n        str = ctx.stylize('[Getter/Setter]', 'special');\n      } else {\n        str = ctx.stylize('[Getter]', 'special');\n      }\n    } else {\n      if (desc.set) {\n        str = ctx.stylize('[Setter]', 'special');\n      }\n    }\n    if (!hasOwnProperty(visibleKeys, key)) {\n      name = '[' + key + ']';\n    }\n    if (!str) {\n      if (ctx.seen.indexOf(desc.value) < 0) {\n        if (isNull(recurseTimes)) {\n          str = formatValue(ctx, desc.value, null);\n        } else {\n          str = formatValue(ctx, desc.value, recurseTimes - 1);\n        }\n        if (str.indexOf('\\n') > -1) {\n          if (array) {\n            str = str.split('\\n').map(function(line) {\n              return '  ' + line;\n            }).join('\\n').substr(2);\n          } else {\n            str = '\\n' + str.split('\\n').map(function(line) {\n              return '   ' + line;\n            }).join('\\n');\n          }\n        }\n      } else {\n        str = ctx.stylize('[Circular]', 'special');\n      }\n    }\n    if (isUndefined(name)) {\n      if (array && key.match(/^\\d+$/)) {\n        return str;\n      }\n      name = JSON.stringify('' + key);\n      if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n        name = name.substr(1, name.length - 2);\n        name = ctx.stylize(name, 'name');\n      } else {\n        name = name.replace(/'/g, \"\\\\'\")\n                   .replace(/\\\\\"/g, '\"')\n                   .replace(/(^\"|\"$)/g, \"'\");\n        name = ctx.stylize(name, 'string');\n      }\n    }\n\n    return name + ': ' + str;\n  }\n\n\n  function reduceToSingleString(output, base, braces) {\n    var numLinesEst = 0;\n    var length = output.reduce(function(prev, cur) {\n      numLinesEst++;\n      if (cur.indexOf('\\n') >= 0) numLinesEst++;\n      return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n    }, 0);\n\n    if (length > 60) {\n      return braces[0] +\n             (base === '' ? '' : base + '\\n ') +\n             ' ' +\n             output.join(',\\n  ') +\n             ' ' +\n             braces[1];\n    }\n\n    return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n  }\n\n\n  // NOTE: These type checking functions intentionally don't use `instanceof`\n  // because it is fragile and can be easily faked with `Object.create()`.\n  function isArray(ar) {\n    return Array.isArray(ar);\n  }\n\n  function isBoolean(arg) {\n    return typeof arg === 'boolean';\n  }\n\n  function isNull(arg) {\n    return arg === null;\n  }\n\n  function isNullOrUndefined(arg) {\n    return arg == null;\n  }\n\n  function isNumber(arg) {\n    return typeof arg === 'number';\n  }\n\n  function isString(arg) {\n    return typeof arg === 'string';\n  }\n\n  function isSymbol(arg) {\n    return typeof arg === 'symbol';\n  }\n\n  function isUndefined(arg) {\n    return arg === void 0;\n  }\n\n  function isRegExp(re) {\n    return isObject(re) && objectToString(re) === '[object RegExp]';\n  }\n\n  function isObject(arg) {\n    return typeof arg === 'object' && arg !== null;\n  }\n\n  function isDate(d) {\n    return isObject(d) && objectToString(d) === '[object Date]';\n  }\n\n  function isError(e) {\n    return isObject(e) &&\n        (objectToString(e) === '[object Error]' || e instanceof Error);\n  }\n\n  function isFunction(arg) {\n    return typeof arg === 'function';\n  }\n\n  function isPrimitive(arg) {\n    return arg === null ||\n           typeof arg === 'boolean' ||\n           typeof arg === 'number' ||\n           typeof arg === 'string' ||\n           typeof arg === 'symbol' ||  // ES6 symbol\n           typeof arg === 'undefined';\n  }\n\n  function objectToString(o) {\n    return Object.prototype.toString.call(o);\n  }\n\n  function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n  }\n\n  return inspect;\n})();\n\n\nconst OBJECT_COLUMN_NAME = '(index)';\nconst LOG_LEVELS = {\n  trace: 0,\n  info: 1,\n  warn: 2,\n  error: 3\n};\nconst INSPECTOR_LEVELS = [];\nINSPECTOR_LEVELS[LOG_LEVELS.trace] = 'debug';\nINSPECTOR_LEVELS[LOG_LEVELS.info] = 'log';\nINSPECTOR_LEVELS[LOG_LEVELS.warn] = 'warning';\nINSPECTOR_LEVELS[LOG_LEVELS.error] = 'error';\n\n// Strip the inner function in getNativeLogFunction(), if in dev also\n// strip method printing to originalConsole.\nconst INSPECTOR_FRAMES_TO_SKIP = __DEV__ ? 2 : 1;\n\nif (global.nativeLoggingHook) {\n  function getNativeLogFunction(level) {\n    return function() {\n      let str;\n      if (arguments.length === 1 && typeof arguments[0] === 'string') {\n        str = arguments[0];\n      } else {\n        str = Array.prototype.map.call(arguments, function(arg) {\n          return inspect(arg, {depth: 10});\n        }).join(', ');\n      }\n\n      let logLevel = level;\n      if (str.slice(0, 9) === 'Warning: ' && logLevel >= LOG_LEVELS.error) {\n        // React warnings use console.error so that a stack trace is shown,\n        // but we don't (currently) want these to show a redbox\n        // (Note: Logic duplicated in ExceptionsManager.js.)\n        logLevel = LOG_LEVELS.warn;\n      }\n      if (global.__inspectorLog) {\n        global.__inspectorLog(\n          INSPECTOR_LEVELS[logLevel],\n          str,\n          [].slice.call(arguments),\n          INSPECTOR_FRAMES_TO_SKIP);\n      }\n      global.nativeLoggingHook(str, logLevel);\n    };\n  }\n\n  function repeat(element, n) {\n    return Array.apply(null, Array(n)).map(function() { return element; });\n  };\n\n  function consoleTablePolyfill(rows) {\n    // convert object -> array\n    if (!Array.isArray(rows)) {\n      var data = rows;\n      rows = [];\n      for (var key in data) {\n        if (data.hasOwnProperty(key)) {\n          var row = data[key];\n          row[OBJECT_COLUMN_NAME] = key;\n          rows.push(row);\n        }\n      }\n    }\n    if (rows.length === 0) {\n      global.nativeLoggingHook('', LOG_LEVELS.info);\n      return;\n    }\n\n    var columns = Object.keys(rows[0]).sort();\n    var stringRows = [];\n    var columnWidths = [];\n\n    // Convert each cell to a string. Also\n    // figure out max cell width for each column\n    columns.forEach(function(k, i) {\n      columnWidths[i] = k.length;\n      for (var j = 0; j < rows.length; j++) {\n        var cellStr = (rows[j][k] || '?').toString();\n        stringRows[j] = stringRows[j] || [];\n        stringRows[j][i] = cellStr;\n        columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n      }\n    });\n\n    // Join all elements in the row into a single string with | separators\n    // (appends extra spaces to each cell to make separators  | alligned)\n    function joinRow(row, space) {\n      var cells = row.map(function(cell, i) {\n        var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n        return cell + extraSpaces;\n      });\n      space = space || ' ';\n      return cells.join(space + '|' + space);\n    };\n\n    var separators = columnWidths.map(function(columnWidth) {\n      return repeat('-', columnWidth).join('');\n    });\n    var separatorRow = joinRow(separators, '-');\n    var header = joinRow(columns);\n    var table = [header, separatorRow];\n\n    for (var i = 0; i < rows.length; i++) {\n      table.push(joinRow(stringRows[i]));\n    }\n\n    // Notice extra empty line at the beginning.\n    // Native logging hook adds \"RCTLog >\" at the front of every\n    // logged string, which would shift the header and screw up\n    // the table\n    global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.info);\n  }\n\n  const originalConsole = global.console;\n  global.console = {\n    error: getNativeLogFunction(LOG_LEVELS.error),\n    info: getNativeLogFunction(LOG_LEVELS.info),\n    log: getNativeLogFunction(LOG_LEVELS.info),\n    warn: getNativeLogFunction(LOG_LEVELS.warn),\n    trace: getNativeLogFunction(LOG_LEVELS.trace),\n    debug: getNativeLogFunction(LOG_LEVELS.trace),\n    table: consoleTablePolyfill\n  };\n\n  // If available, also call the original `console` method since that is\n  // sometimes useful. Ex: on OS X, this will let you see rich output in\n  // the Safari Web Inspector console.\n  if (__DEV__ && originalConsole) {\n    // Preserve the original `console` as `originalConsole`\n    const descriptor = Object.getOwnPropertyDescriptor(global, 'console');\n    if (descriptor) {\n      Object.defineProperty(global, 'originalConsole', descriptor);\n    }\n\n    Object.keys(console).forEach(methodName => {\n      const reactNativeMethod = console[methodName];\n      if (originalConsole[methodName]) {\n        console[methodName] = function() {\n          originalConsole[methodName](...arguments);\n          reactNativeMethod.apply(console, arguments);\n        };\n      }\n    });\n  }\n} else if (!global.console) {\n  function consoleLoggingStub() {};\n  global.console = {\n    error: consoleLoggingStub,\n    info: consoleLoggingStub,\n    log: consoleLoggingStub,\n    warn: consoleLoggingStub,\n    trace: consoleLoggingStub,\n    debug: consoleLoggingStub,\n    table: consoleLoggingStub\n  };\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule error-guard\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable strict */\n\nlet _inGuard = 0;\n\n/**\n * This is the error handler that is called when we encounter an exception\n * when loading a module. This will report any errors encountered before\n * ExceptionsManager is configured.\n */\nlet _globalHandler = function onError(e) {\n  throw e;\n};\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\nconst ErrorUtils = {\n  setGlobalHandler(fun) {\n    _globalHandler = fun;\n  },\n  getGlobalHandler() {\n    return _globalHandler;\n  },\n  reportError(error) {\n    _globalHandler && _globalHandler(error);\n  },\n  reportFatalError(error) {\n    _globalHandler && _globalHandler(error, true);\n  },\n  applyWithGuard(fun, context, args) {\n    try {\n      _inGuard++;\n      return fun.apply(context, args);\n    } catch (e) {\n      ErrorUtils.reportError(e);\n    } finally {\n      _inGuard--;\n    }\n    return null;\n  },\n  applyWithGuardIfNeeded(fun, context, args) {\n    if (ErrorUtils.inGuard()) {\n      return fun.apply(context, args);\n    } else {\n      ErrorUtils.applyWithGuard(fun, context, args);\n    }\n    return null;\n  },\n  inGuard() {\n    return _inGuard;\n  },\n  guard(fun, name, context) {\n    if (typeof fun !== 'function') {\n      console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n      return null;\n    }\n    name = name || fun.name || '<generated guard>';\n    function guarded() {\n      return (\n        ErrorUtils.applyWithGuard(\n          fun,\n          context || this,\n          arguments,\n          null,\n          name\n        )\n      );\n    }\n\n    return guarded;\n  },\n};\n\nglobal.ErrorUtils = ErrorUtils;\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Number.es6\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable strict */\n\nif (Number.EPSILON === undefined) {\n  Object.defineProperty(Number, 'EPSILON', {\n    value: Math.pow(2, -52),\n  });\n}\nif (Number.MAX_SAFE_INTEGER === undefined) {\n  Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {\n    value: Math.pow(2, 53) - 1,\n  });\n}\nif (Number.MIN_SAFE_INTEGER === undefined) {\n  Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {\n    value: -(Math.pow(2, 53) - 1),\n  });\n}\nif (!Number.isNaN) {\n  // eslint-disable-next-line max-len\n  // https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/number/index.md#polyfill-for-numberisnan\n  const globalIsNaN = global.isNaN;\n  Object.defineProperty(Number, 'isNaN', {\n    configurable: true,\n    enumerable: false,\n    value: function isNaN(value) {\n      return typeof value === 'number' && globalIsNaN(value);\n    },\n    writable: true,\n  });\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule String.prototype.es6\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable strict, no-extend-native, no-bitwise */\n\n/*\n * NOTE: We use (Number(x) || 0) to replace NaN values with zero.\n */\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function(search) {\n    'use strict';\n    if (this == null) {\n      throw TypeError();\n    }\n    var string = String(this);\n    var pos = arguments.length > 1 ?\n      (Number(arguments[1]) || 0) : 0;\n    var start = Math.min(Math.max(pos, 0), string.length);\n    return string.indexOf(String(search), pos) === start;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function(search) {\n    'use strict';\n    if (this == null) {\n      throw TypeError();\n    }\n    var string = String(this);\n    var stringLength = string.length;\n    var searchString = String(search);\n    var pos = arguments.length > 1 ?\n      (Number(arguments[1]) || 0) : stringLength;\n    var end = Math.min(Math.max(pos, 0), stringLength);\n    var start = end - searchString.length;\n    if (start < 0) {\n      return false;\n    }\n    return string.lastIndexOf(searchString, start) === start;\n  };\n}\n\nif (!String.prototype.repeat) {\n  String.prototype.repeat = function(count) {\n    'use strict';\n    if (this == null) {\n      throw TypeError();\n    }\n    var string = String(this);\n    count = Number(count) || 0;\n    if (count < 0 || count === Infinity) {\n      throw RangeError();\n    }\n    if (count === 1) {\n      return string;\n    }\n    var result = '';\n    while (count) {\n      if (count & 1) {\n        result += string;\n      }\n      if ((count >>= 1)) {\n        string += string;\n      }\n    }\n    return result;\n  };\n}\n\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n    if (typeof start !== 'number') {\n      start = 0;\n    }\n\n    if (start + search.length > this.length) {\n      return false;\n    } else {\n      return this.indexOf(search, start) !== -1;\n    }\n  };\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Array.prototype.es6\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable */\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nfunction findIndex(predicate, context) {\n  if (this == null) {\n    throw new TypeError(\n      'Array.prototype.findIndex called on null or undefined'\n    );\n  }\n  if (typeof predicate !== 'function') {\n    throw new TypeError('predicate must be a function');\n  }\n  var list = Object(this);\n  var length = list.length >>> 0;\n  for (var i = 0; i < length; i++) {\n    if (predicate.call(context, list[i], i, list)) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nif (!Array.prototype.findIndex) {\n  Object.defineProperty(Array.prototype, 'findIndex', {\n    enumerable: false,\n    writable: true,\n    configurable: true,\n    value: findIndex\n  });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, 'find', {\n    enumerable: false,\n    writable: true,\n    configurable: true,\n    value: function(predicate, context) {\n      if (this == null) {\n        throw new TypeError(\n          'Array.prototype.find called on null or undefined'\n        );\n      }\n      var index = findIndex.call(this, predicate, context);\n      return index === -1 ? undefined : this[index];\n    }\n  });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\nif (!Array.prototype.includes) {\n  Object.defineProperty(Array.prototype, 'includes', {\n    enumerable: false,\n    writable: true,\n    configurable: true,\n    value: function (searchElement) {\n      var O = Object(this);\n      var len = parseInt(O.length) || 0;\n      if (len === 0) {\n        return false;\n      }\n      var n = parseInt(arguments[1]) || 0;\n      var k;\n      if (n >= 0) {\n        k = n;\n      } else {\n        k = len + n;\n        if (k < 0) {\n          k = 0;\n        }\n      }\n      var currentElement;\n      while (k < len) {\n        currentElement = O[k];\n        if (searchElement === currentElement ||\n          (searchElement !== searchElement && currentElement !== currentElement)) {\n          return true;\n        }\n        k++;\n      }\n      return false;\n    }\n  });\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Array.es6\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable */\n\n/**\n * Creates an array from array like objects.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from\n */\nif (!Array.from) {\n  Array.from = function(arrayLike /*, mapFn, thisArg */) {\n    if (arrayLike == null) {\n      throw new TypeError('Object is null or undefined');\n    }\n\n    // Optional args.\n    var mapFn = arguments[1];\n    var thisArg = arguments[2];\n\n    var C = this;\n    var items = Object(arrayLike);\n    var symbolIterator = typeof Symbol === 'function'\n      ? Symbol.iterator\n      : '@@iterator';\n    var mapping = typeof mapFn === 'function';\n    var usingIterator = typeof items[symbolIterator] === 'function';\n    var key = 0;\n    var ret;\n    var value;\n\n    if (usingIterator) {\n      ret = typeof C === 'function'\n        ? new C()\n        : [];\n      var it = items[symbolIterator]();\n      var next;\n\n      while (!(next = it.next()).done) {\n        value = next.value;\n\n        if (mapping) {\n          value = mapFn.call(thisArg, value, key);\n        }\n\n        ret[key] = value;\n        key += 1;\n      }\n\n      ret.length = key;\n      return ret;\n    }\n\n    var len = items.length;\n    if (isNaN(len) || len < 0) {\n      len = 0;\n    }\n\n    ret = typeof C === 'function'\n      ? new C(len)\n      : new Array(len);\n\n    while (key < len) {\n      value = items[key];\n\n      if (mapping) {\n        value = mapFn.call(thisArg, value, key);\n      }\n\n      ret[key] = value;\n\n      key += 1;\n    }\n\n    ret.length = key;\n    return ret;\n  };\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.es7\n * @polyfill\n * @nolint\n */\n\n(function() {\n  'use strict';\n\n  const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n  /**\n   * Returns an array of the given object's own enumerable entries.\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n   */\n  if (typeof Object.entries !== 'function') {\n    Object.entries = function(object) {\n      // `null` and `undefined` values are not allowed.\n      if (object == null) {\n        throw new TypeError('Object.entries called on non-object');\n      }\n\n      const entries = [];\n      for (const key in object) {\n        if (hasOwnProperty.call(object, key)) {\n          entries.push([key, object[key]]);\n        }\n      }\n      return entries;\n    };\n  }\n\n  /**\n   * Returns an array of the given object's own enumerable entries.\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n   */\n  if (typeof Object.values !== 'function') {\n    Object.values = function(object) {\n      // `null` and `undefined` values are not allowed.\n      if (object == null) {\n        throw new TypeError('Object.values called on non-object');\n      }\n\n      const values = [];\n      for (const key in object) {\n        if (hasOwnProperty.call(object, key)) {\n          values.push(object[key]);\n        }\n      }\n      return values;\n    };\n  }\n\n})();\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule babelHelpers\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable */\n\n// Created by running:\n// require('babel-core').buildExternalHelpers('_extends classCallCheck createClass createRawReactElement defineProperty get inherits  interopRequireDefault interopRequireWildcard objectWithoutProperties possibleConstructorReturn slicedToArray taggedTemplateLiteral toArray toConsumableArray '.split(' '))\n// then replacing the `global` reference in the last line to also use `this`.\n//\n// actually, that's a lie, because babel6 omits _extends and createRawReactElement\n\nvar babelHelpers = global.babelHelpers = {};\n\nbabelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nbabelHelpers.createRawReactElement = (function () {\n  var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7;\n  return function createRawReactElement(type, key, props) {\n    return {\n      $$typeof: REACT_ELEMENT_TYPE,\n      type: type,\n      key: key,\n      ref: null,\n      props: props,\n      _owner: null\n    };\n  };\n})();\n\nbabelHelpers.classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nbabelHelpers.createClass = (function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n})();\n\nbabelHelpers.defineEnumerableProperties = function(obj, descs) {\n  for (var key in descs) {\n    var desc = descs[key];\n    desc.configurable = (desc.enumerable = true);\n    if ('value' in desc) desc.writable = true;\n    Object.defineProperty(obj, key, desc);\n  }\n  return obj;\n};\n\nbabelHelpers.defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nbabelHelpers._extends = babelHelpers.extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nbabelHelpers.get = function get(object, property, receiver) {\n  if (object === null) object = Function.prototype;\n  var desc = Object.getOwnPropertyDescriptor(object, property);\n\n  if (desc === undefined) {\n    var parent = Object.getPrototypeOf(object);\n\n    if (parent === null) {\n      return undefined;\n    } else {\n      return get(parent, property, receiver);\n    }\n  } else if (\"value\" in desc) {\n    return desc.value;\n  } else {\n    var getter = desc.get;\n\n    if (getter === undefined) {\n      return undefined;\n    }\n\n    return getter.call(receiver);\n  }\n};\n\nbabelHelpers.inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nbabelHelpers.interopRequireDefault = function (obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n};\n\nbabelHelpers.interopRequireWildcard = function (obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n};\n\nbabelHelpers.objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nbabelHelpers.possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nbabelHelpers.slicedToArray = (function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n})();\n\nbabelHelpers.taggedTemplateLiteral = function (strings, raw) {\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n};\n\nbabelHelpers.toArray = function (arr) {\n  return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nbabelHelpers.toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n","// Auto-generated content.\n// This file contains the boilerplate to set up your React app.\n// If you want to modify your application, start in \"index.vr.js\"\n\n// Auto-generated content.\nimport {VRInstance} from 'react-vr-web';\n\nfunction init(bundle, parent, options) {\n  const vr = new VRInstance(bundle, 'dockerized_react_vr', parent, {\n    // Add custom options here\n    ...options,\n  });\n  vr.render = function() {\n    // Any custom behavior you want to perform on each frame goes here\n  };\n  // Begin the animation loop\n  vr.start();\n  return vr;\n}\n\nwindow.ReactVR = {init};\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * @providesModule ReactVRApp\n */\n\nimport bundleFromLocation from './js/bundleFromLocation';\nimport createRootView from './js/createRootView';\nimport Module from './js/Modules/Module';\nimport RCTBaseView from './js/Views/BaseView';\nimport VRInstance from './js/VRInstance';\nimport {BasicVideoPlayer, addCustomizedVideoPlayer, getSupportedFormats} from './js/Video/OVRVideo';\n\nimport {ReactNativeContext} from './js/ReactNativeContext';\n\nexport {bundleFromLocation};\nexport {createRootView};\nexport {Module};\nexport {RCTBaseView};\nexport {ReactNativeContext};\nexport {VRInstance};\nexport {BasicVideoPlayer};\nexport {addCustomizedVideoPlayer};\nexport {getSupportedFormats};\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Turns a relative path into a full path based upon the current location.\n * Full paths are required for Web Workers loading external scripts.\n */\nexport default function bundleFromLocation(root: string): string {\n  let path = location.pathname;\n  try {\n    const absoluteURL = new URL(root);\n    return absoluteURL.toString();\n  } catch (error) {\n    //location is not an absolute URL, generate one from the root\n    if (!path.endsWith('/')) {\n      // Trim filename\n      path = path.substr(0, path.lastIndexOf('/'));\n    } else {\n      path = path.substr(0, path.length - 1);\n    }\n    return location.protocol + '//' + location.host + path + '/' + root;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport {ReactNativeContext} from './ReactNativeContext';\nimport WebWorkerBridge from './Bridge/WebWorkerBridge';\n\nimport type Bridge from './Bridge/Bridge';\nimport type Module from './Modules/Module';\nimport type {GuiSys} from 'ovrui';\nimport type {ContextOptions} from './ReactNativeContext';\nimport type {Camera} from 'three';\nimport type {CustomView} from './Modules/UIManager';\n\ntype RootViewOptions = {\n  assetRoot?: string,\n  bundle?: string,\n  bridge?: Bridge,\n  customViews?: Array<CustomView>,\n  enableHotReload?: boolean,\n  initialProps?: {[prop: string]: any},\n  isLowLatency?: boolean,\n  nativeModules?: Array<Module>,\n};\n\nexport type RootView = {\n  context: ReactNativeContext,\n  frame: (camera: Camera) => void,\n};\n\nconst DEVTOOLS_FLAG = /\\bdevtools\\b/;\nconst HOTRELOAD_FLAG = /\\bhotreload\\b/;\n\n/**\n * Contains the majority of the boilerplate needed to initialize a React context\n */\nexport default function createRootView(\n  guisys: GuiSys,\n  name: string,\n  options: RootViewOptions = {}\n): RootView {\n  if (!guisys) {\n    throw new Error('ReactVR Root View must attach to an OVRUI GUI!');\n  }\n  if (!name || typeof name !== 'string') {\n    throw new Error('ReactVR Root View must have a module name to mount');\n  }\n\n  // If running in development mode, and the user has added ?devtools to the query\n  // string, attempt to connect to standalone React Devtools on localhost:8097\n  let enableDevTools = false;\n  if (__DEV__) {\n    if (DEVTOOLS_FLAG.test(location.search)) {\n      enableDevTools = true;\n      if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n        console.log(\n          'We detected that you have the React Devtools extension installed. ' +\n            'Please note that at this time, React VR is only compatible with the ' +\n            'standalone Inspector (npm run devtools).'\n        );\n      }\n    }\n  }\n\n  const initialProps = options.initialProps || {};\n  const contextOptions: ContextOptions = {\n    isLowLatency: !!options.isLowLatency,\n    customViews: options.customViews,\n  };\n  if (options.assetRoot) {\n    contextOptions.assetRoot = options.assetRoot;\n  }\n  if (HOTRELOAD_FLAG.test(location.search)) {\n    contextOptions.enableHotReload = true;\n  }\n  if (options.enableHotReload) {\n    contextOptions.enableHotReload = options.enableHotReload;\n  }\n\n  const bridge =\n    options.bridge ||\n    new WebWorkerBridge({\n      enableDevTools: enableDevTools,\n      enableHotReload: contextOptions.enableHotReload,\n    });\n\n  let bundleURL = options.bundle || '../index.bundle?platform=vr';\n  // append the query param to make the RN packager wrap the components\n  if (contextOptions.enableHotReload) {\n    bundleURL += '&hot=true';\n  }\n\n  const rn = new ReactNativeContext(guisys, bridge, contextOptions);\n  if (Array.isArray(options.nativeModules)) {\n    for (const module of options.nativeModules) {\n      rn.registerModule(module);\n    }\n  }\n  rn.init(bundleURL);\n  const rootTag = rn.createRootView(name, initialProps);\n\n  return {\n    context: rn,\n    frame(camera: Camera) {\n      rn.frame(camera, rootTag);\n    },\n    rootTag: rootTag,\n  };\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport AndroidConstants from './Modules/AndroidConstants';\nimport AsyncLocalStorage from './Modules/AsyncLocalStorage';\nimport ControllerInfo from './Modules/ControllerInfo';\nimport DeviceInfo from './Modules/DeviceInfo';\nimport ExternalAssets from './Modules/ExternalAssets';\nimport GlyphTextures from './Modules/GlyphTextures';\nimport History from './Modules/History';\nimport LinkingManager from './Modules/LinkingManager';\nimport Location from './Modules/Location';\nimport LocationObserver from './Modules/LocationObserver';\nimport Networking from './Modules/Networking';\nimport {RCTResourceManager} from './Utils/RCTResourceManager';\nimport {RCTInputControls} from './Utils/RCTInputControls';\nimport RCTHeadModel from './Utils/RCTHeadModel';\nimport RCTVideoModule from './Modules/RCTVideoModule';\nimport RCTAudioModule from './Modules/RCTAudioModule';\nimport TextureManager from './Utils/TextureManager';\nimport Timing from './Modules/Timing';\nimport UIManager from './Modules/UIManager';\nimport WebSocketModule from './Modules/WebSocketModule';\nimport ReactVRConstants from './Modules/ReactVRConstants';\nimport RCTExceptionsManager from './Modules/RCTExceptionsManager';\nimport RCTSourceCode from './Modules/RCTSourceCode';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nimport type Bridge from './Bridge/Bridge';\nimport type Module from './Modules/Module';\nimport type {GuiSys, UIView, UIViewEvent} from 'ovrui';\nimport type {Camera, Object3D} from 'three';\nimport type {CustomView} from './Modules/UIManager';\n\ntype Message = [Array<number>, Array<number>, Array<any>];\n\nexport type ContextOptions = {\n  assetRoot?: string,\n  enableHotReload?: boolean,\n  isLowLatency?: boolean,\n  customViews?: Array<CustomView>,\n};\n\nconst ROOT_VIEW_INCREMENT = 10;\nconst ONMOVE_EPSILON = 0.0001;\n\n/**\n * replaceHiddenAttributes is a callback function used by the JSON.stringify,\n * the purpose is to prevent the serialization of any key that starts in '_' as\n * these are denoted to be private to the class\n **/\nfunction replaceHiddenAttributes<T>(key: string, value: T): T | void {\n  if (key.charAt && key.charAt(0) === '_') {\n    return undefined;\n  } else {\n    return value;\n  }\n}\n\n/**\n * describe\n * Reflects the contents of a the class over to React code\n * this is used within init to create a contract between the runtime and React\n * as to which module corresponds to a specfic index\n * @param ctx - React Context\n **/\nfunction describe(ctx: ReactNativeContext) {\n  const remoteModuleConfig = [];\n  for (const module of ctx.modules) {\n    const description = module._describe();\n    if (__DEV__) {\n      console.log(description);\n    }\n    remoteModuleConfig.push(description);\n  }\n\n  return remoteModuleConfig;\n}\n\n/**\n * ReactNativeContext is the main object for communicating to and from the React bundle\n * The react bundle runs asynchronously in a webworker so that the main UI and render thread\n * of the browser is not interrupted by work within react.\n * On construction the context will start the WebWorker and register a callback for handling\n * the messages which are handled in the `frame` function\n * As the webworker runs asynchronously calls to and from react are latent and therefore will\n * not have a return value. JavaScript callbacks and addional messages should be used to handle\n * responses\n * Order of API use:\n * 1) Create the Context\n * 2) register any external modules through `registerModule`\n * 3) init the bundle, this causes the bundle to be loaded from the url provided but prior to\n *    that creates a json description of the regstered modules. This description - created by\n *    `describe` - determines the details of the protocol that is used to communicate with the\n *    webworker. It is important that both the modules and the registered views of UIManager\n *    provide the necessary detail, for modules the majority of the work is handled via\n *    Module.describe however for views any properties that need to be communicated are across\n *    the WebWorker need to be described in `NativeProps`. Note any properties starting in '_'\n *    will be determined to be hidden and any functions starting with '$' will be determined to be\n *    async/promise functions and take an extra two callback IDs to denote success and fail - eg\n *    LinkingModule: openURL\n * 4) createRootView\n *    A root view is the main view created by the runtime code, this will then cause a registerd\n *    module to be created with the necessary Props\n *    see `AppRegistry.registerComponent('main', () => Main);`\n *    The root view tag is returned and can be used to update the props for the root view or\n *    delete the view\n * 5) start of render loop\n * 6) call frame function on context\n *    `frame` must be called within a requestAnimationFrame callback this pumps the webworker and\n *    distributes the messages obtained from the bridge. This is also where the <Scene> transform\n *    is applied, if one is present (not to the camera directly but to a camera parent object that\n *    we create and manage here; if camera already has a parent we log a warning and do nothing).\n * 7) update root view as required\n *    Optionally and as required the props on the root view can be updated using the root tag\n *    obtained from `createRootView`\n * 8) destroyRootView\n *    the destruction of the root view causes the entire view hierarchy to be deleted\n * 9) shutdown\n *    Will release the resrouces associated with the context, once shutdown an init is no longer\n *    possible\n **/\nexport class ReactNativeContext {\n  AudioModule: RCTAudioModule;\n  bridge: Bridge;\n  currentRootTag: number;\n  guiSys: GuiSys;\n  enableHotReload: boolean;\n  GlyphTextures: GlyphTextures;\n  HeadModel: RCTHeadModel;\n  isLowLatency: boolean;\n  lastHit: UIView | null;\n  lastLocalIntersect: [number, number] | null;\n  lastSource: string | null;\n  messages: Array<Message>;\n  modules: Array<Module>;\n  RCTInputControls: RCTInputControls;\n  RCTResourceManager: RCTResourceManager;\n  TextureManager: TextureManager;\n  Timing: Timing;\n  UIManager: UIManager;\n  VideoModule: RCTVideoModule;\n\n  _cameraParentFromTag: Array<Object3D | null>;\n  _moduleForTag: Array<string>;\n\n  /**\n   * Construct a ReactNativeContext given the gui and url for the bridge\n   * the construction registers the core modules used by most applications\n   * new modules can be registered after this but prior to the init call\n   * @param guiSys - instance of OVRUI.guiSys\n   * @param bridgeURL - url of location of bridge\n   */\n  constructor(guiSys: GuiSys, bridge: Bridge, options: ContextOptions = {}) {\n    this.modules = [];\n    this.currentRootTag = 1;\n    this.bridge = bridge;\n    this.guiSys = guiSys;\n    this.messages = [];\n    this.isLowLatency = !!options.isLowLatency; // Whether this context should target 90fps\n    this.enableHotReload = !!options.enableHotReload; // Whether this context should enable hot reload\n\n    this.lastHit = null;\n    this.lastLocalIntersect = null;\n    this.lastSource = null;\n\n    this.UIManager = new UIManager(this, guiSys, options.customViews);\n    this.Timing = new Timing(this);\n    this.RCTResourceManager = new RCTResourceManager();\n    this.RCTInputControls = new RCTInputControls(this, guiSys);\n    this.HeadModel = new RCTHeadModel(this);\n    this.VideoModule = new RCTVideoModule(this);\n    this.AudioModule = new RCTAudioModule(this);\n    this.TextureManager = new TextureManager();\n    this.GlyphTextures = new GlyphTextures(this);\n    this._moduleForTag = [];\n    this._cameraParentFromTag = [];\n\n    // register the core modules\n    this.registerModule(this.UIManager);\n    this.registerModule(new AndroidConstants());\n    this.registerModule(new AsyncLocalStorage(this));\n    this.registerModule(new ControllerInfo(this));\n    this.registerModule(new DeviceInfo());\n    this.registerModule(new History(this));\n    this.registerModule(new Networking(this));\n    this.registerModule(new LinkingManager(this));\n    this.registerModule(new Location(this));\n    this.registerModule(new LocationObserver(this));\n    this.registerModule(this.Timing);\n    this.registerModule(this.VideoModule);\n    this.registerModule(this.AudioModule);\n    this.registerModule(new WebSocketModule(this));\n    this.registerModule(new ReactVRConstants());\n    this.registerModule(new RCTExceptionsManager());\n    this.registerModule(new RCTSourceCode(this));\n    this.registerModule(new ExternalAssets(options.assetRoot || ''));\n    this.registerModule(this.GlyphTextures);\n\n    // Register event listener to Guisys\n    guiSys.eventDispatcher.addEventListener('GuiSysEvent', this._onGuiSysEvent.bind(this));\n    guiSys.eventDispatcher.addEventListener('UIViewEvent', this._onUIViewEvent.bind(this));\n\n    // register the worker onmessage function\n    // messages are not execute at point of recieving\n    // but queue for later dispatch in the `frame` function\n    this.bridge.setMessageHandler(msg => {\n      if (msg.cmd === 'exec') {\n        const results = msg.results;\n        if (results && results.length) {\n          this.messages.push(results);\n        }\n      }\n    });\n  }\n\n  /**\n   * initialises the WebWorker with the bundle\n   * @param bundle - url of the bundle\n   */\n  init(bundle: string) {\n    this.bridge.postMessage(\n      JSON.stringify(\n        {\n          cmd: 'moduleConfig',\n          moduleConfig: {remoteModuleConfig: describe(this)},\n        },\n        replaceHiddenAttributes\n      )\n    );\n\n    this.bridge.postMessage(JSON.stringify({cmd: 'bundle', bundleName: bundle}));\n    if (this.enableHotReload) {\n      const bundleURL = new URL(bundle);\n      console.warn('HotReload on ' + bundle);\n      this.callFunction('HMRClient', 'enable', [\n        'vr',\n        bundleURL.pathname.toString().substr(1),\n        bundleURL.hostname,\n        bundleURL.port,\n      ]);\n    }\n  }\n\n  /**\n   * shutdown the react native context\n   */\n  shutdown() {\n    for (const module of this.modules) {\n      if (typeof module.shutdown === 'function') {\n        module.shutdown();\n      }\n    }\n  }\n\n  /**\n   * creates a root view given the registered modules and optional props\n   * @param module - name of module registered in the react bundle\n   * @param props - props that is posted to the registered module\n   * @return returns the tag of the rootview\n   */\n  createRootView(module: string, props: {[prop: string]: any}, container?: SceneGraphNode) {\n    const tag = this.currentRootTag;\n    // TODO: Root tags should be sourced from UIManager instead, which\n    // is aware of availability.\n    this.currentRootTag += ROOT_VIEW_INCREMENT;\n    this.bridge.postMessage(\n      JSON.stringify({\n        cmd: 'exec',\n        module: 'AppRegistry',\n        function: 'runApplication',\n        args: [module, {initialProps: props, rootTag: tag}],\n      })\n    );\n    this._moduleForTag[tag] = module;\n    if (!container) {\n      this._cameraParentFromTag[tag] = new THREE.Object3D();\n    }\n    this.UIManager.createRootView(tag, container);\n    return tag;\n  }\n\n  /**\n   * updated a root view with new props\n   * @param tag - root view tag returned from createRootView\n   * @param props - props that is posted to the registered module\n   */\n  updateRootView(tag: number, props: {[prop: string]: any}) {\n    this.bridge.postMessage(\n      JSON.stringify({\n        cmd: 'exec',\n        module: 'AppRegistry',\n        function: 'runApplication',\n        args: [this._moduleForTag[tag], {initialProps: props, rootTag: tag}],\n      })\n    );\n  }\n\n  /**\n   * deletes the root view\n   * @param tag - root view tag returned from createRootView\n   */\n  destroyRootView(tag: number) {\n    delete this._moduleForTag[tag];\n    const cameraParent = this._cameraParentFromTag[tag];\n    if (cameraParent) {\n      // Detach children; typically there is only 1 child, the camera.\n      for (const child of cameraParent.children) {\n        cameraParent.remove(child);\n      }\n      delete this._cameraParentFromTag[tag];\n    }\n    this.bridge.postMessage(\n      JSON.stringify({\n        cmd: 'exec',\n        module: 'AppRegistry',\n        function: 'unmountApplicationComponentAtRootTag',\n        args: [tag],\n      })\n    );\n  }\n\n  /**\n   * internal function that processing the gui event and distributes to React code\n   * @param event - event object passed from guiSys\n   */\n  _onGuiSysEvent(event: UIViewEvent) {\n    switch (event.eventType) {\n      case OVRUI.GuiSysEventType.HIT_CHANGED:\n        if (\n          this.lastHit !== event.args.currentHit ||\n          this.lastSource !== event.args.currentSource\n        ) {\n          this.lastHit = event.args.currentHit;\n          this.lastSource = event.args.currentSource;\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  /**\n   * internal function that processing the uiview event and distributes to React code\n   * @param event - event object passed from uiView\n   */\n  _onUIViewEvent(event: UIViewEvent) {\n    switch (event.eventType) {\n      case OVRUI.UIViewEventType.FOCUS_LOST:\n        {\n          const viewTag = event.view ? this.getHitTag(event.view) : undefined;\n          const targetTag = event.args.target ? this.getHitTag(event.args.target) : undefined;\n          const payload = {\n            target: targetTag,\n            source: event.args.source,\n          };\n          if (viewTag) {\n            // Dispatch exit event\n            this.callFunction('RCTEventEmitter', 'receiveEvent', [viewTag, 'topExit', payload]);\n          }\n        }\n        break;\n      case OVRUI.UIViewEventType.FOCUS_GAINED:\n        {\n          const viewTag = event.view ? this.getHitTag(event.view) : undefined;\n          const targetTag = event.args.target ? this.getHitTag(event.args.target) : undefined;\n          const payload = {\n            target: targetTag,\n            source: event.args.source,\n          };\n          if (viewTag) {\n            // Dispatch enter event\n            this.callFunction('RCTEventEmitter', 'receiveEvent', [viewTag, 'topEnter', payload]);\n          }\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  /**\n   * frame update, services the modules and views\n   * must be called regularly to ensure the messages from the WebWorker are distributed\n   * @param camera - three.js camera used to view the scene\n   * @param rootTag - the React Tag for the root of the scene\n   */\n  frame(camera: Camera, rootTag?: number) {\n    const frameStart = window.performance ? performance.now() : Date.now();\n    this.Timing && this.Timing.frame(frameStart);\n    // Send current cursor position if the currently-hit view is listening\n    if (this.lastHit && this.lastHit.owner && this.lastHit.owner.receivesMoveEvent) {\n      const intersect = this.guiSys.getLastLocalIntersect();\n      if (!intersect) {\n        this.lastLocalIntersect = null;\n      }\n      if (intersect) {\n        const lastLocalIntersect = this.lastLocalIntersect;\n        if (\n          !lastLocalIntersect ||\n          Math.abs(intersect[0] - lastLocalIntersect[0]) > ONMOVE_EPSILON ||\n          Math.abs(intersect[1] - lastLocalIntersect[1]) > ONMOVE_EPSILON\n        ) {\n          const viewTag = this.getHitTag(this.lastHit);\n          const payload = {offset: intersect};\n          this.callFunction('RCTEventEmitter', 'receiveEvent', [viewTag, 'topMove', payload]);\n          this.lastLocalIntersect = intersect;\n        }\n      }\n    }\n    this.bridge.postMessage(JSON.stringify({cmd: 'flush'}));\n    for (const results of this.messages) {\n      if (results && results.length >= 3) {\n        const moduleIndex = results[0];\n        const funcIndex = results[1];\n        const params = results[2];\n        for (let i = 0; i < moduleIndex.length; i++) {\n          this.modules[moduleIndex[i]]._functionMap[funcIndex[i]].apply(\n            this.modules[moduleIndex[i]],\n            params[i]\n          );\n        }\n      }\n    }\n\n    this.messages = [];\n    this.UIManager && this.UIManager.frame(frameStart);\n    this.HeadModel && this.HeadModel.frame(camera);\n    this.VideoModule && this.VideoModule.frame();\n    this.AudioModule && this.AudioModule.frame(camera);\n    this.TextureManager.frame();\n\n    if (rootTag) {\n      this._applySceneTransform(camera, rootTag);\n    }\n\n    // Last, check if there is any remaining frame time, and use it to run idle\n    // callbacks\n    this.Timing && this.Timing.idle(frameStart);\n  }\n\n  /**\n    * Updates the camera parent with current <Scene> transform, if any.\n    * Do nothing if there is no <Scene>, the <Scene> has no transform property,\n    * or the camera already has a parent object.\n   **/\n  _applySceneTransform(camera: Camera, rootTag: number) {\n    const worldMatrix = this.UIManager.getSceneCameraTransform(rootTag);\n    const cameraParent = this._cameraParentFromTag[rootTag];\n\n    // worldMatrix is null if no <Scene> or <Scene> has no transform property.\n    // We may have set cameraParentFromTag[rootTag] to null (and printed a\n    // console warning) if there was a <Scene> transform but the camera already\n    // had a parent. Return immediately in both cases.\n    if (!worldMatrix || !cameraParent) {\n      return;\n    }\n\n    // Don't overwrite a parent object that isn't ours.\n    if (camera.parent && camera.parent.uuid !== cameraParent.uuid) {\n      console.warn(\n        'Camera object already has a parent; ' +\n          \"Use of 'transform' property on <Scene> will have no effect.\"\n      );\n      this._cameraParentFromTag[rootTag] = null;\n      return;\n    }\n\n    // One-time initialization: parent the camera object under cameraParent.\n    // We use a parent to avoid modifying the camera's local transform, which\n    // is being updated with positional tracking data when available.\n    if (cameraParent.children.length === 0) {\n      cameraParent.add(camera);\n    }\n\n    // In Three.js, object.matrix and object.matrixWorld represent the local and\n    // global transforms. When matrixAutoUpdate is enabled (which is the default)\n    // both are recomputed each frame (in WebGLRenderer.render), matrix from the\n    // object's position, rotation, and scale attributes and matrixWorld from the\n    // parent hierarchy (if no parent, matrix and matrixWorld are identical).\n\n    // We disable cameraParent.matrixAutoUpdate, since we update the matrix here\n    // manually and we explicitly call updateMatrixWorld (which recomputes the\n    // global transform of an object and its children).\n    cameraParent.matrixAutoUpdate = false;\n    cameraParent.matrix.fromArray(worldMatrix);\n    cameraParent.updateMatrixWorld(true);\n  }\n\n  /**\n    * getHitTag\n    * @param hit - scene object\n    * @returns the tag of the closest view with a tag or undefined if not found\n   **/\n  getHitTag(hit: ?UIView) {\n    while (hit) {\n      if (hit.tag) {\n        return hit.tag;\n      }\n      hit = hit.parent;\n    }\n    return undefined;\n  }\n\n  /**\n    * calls a particular function within a react module\n    * @param moduleName - module within the react bundle\n    * @param functionName - name of the function\n    * @param args - array of args passed to react bundle over webworker\n   **/\n  callFunction(moduleName: string, functionName: string, args: Array<any>) {\n    this.bridge.postMessage(\n      JSON.stringify({\n        cmd: 'exec',\n        module: moduleName,\n        function: functionName,\n        args: args,\n      })\n    );\n  }\n\n  /**\n    * calls a particular callback within a react module\n    * @param id - callback specified by react\n    * @param args - array of args passed to react bundle over webworker\n   **/\n  invokeCallback(id: number, args: Array<any>) {\n    this.bridge.postMessage(\n      JSON.stringify({\n        cmd: 'invoke',\n        id: id,\n        args: args,\n      })\n    );\n  }\n\n  /**\n    * registers a module for use by the context\n    * must be specified prior to calling init\n    * @param module - instance of a module to register, extends Module\n   **/\n  registerModule(module: Module) {\n    this.modules.push(module);\n  }\n\n  registerTextureSource(name: string, source: Element, options: {[key: string]: any} = {}) {\n    this.TextureManager.registerLocalTextureSource(name, source, options);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\n/**\n * @file\n * @class AndroidConstants\n * @extends Module\n * @category runtime-modules\n */\nexport default class AndroidConstants extends Module {\n  Version: number;\n\n  constructor() {\n    super('AndroidConstants');\n    this.Version = 22;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nexport type ModuleDescription = [\n  string,\n  {\n    [const: string]: any,\n  },\n  Array<string>,\n  Array<number>,\n  Array<number>,\n];\n\n/**\n * Modules are platform-specific implementations of functionality that can\n * be asynchronously called across the bridge.\n * This class serves as a base for all Modules, and provides the _describe\n * method used to extract attributes and send them to the web worker.\n * This React and runtime handshake can only be done once\n * The type and first character of the name of the attribute is used to\n * determine how the attribute is reflected\n *\n * - '_' denotes a hidden attribute and should not be reflected\n * - '$' is a function which is async in react code, for the runtime the fucntion\n *   take two automatic callback ids, success and reject, one of which must be called\n * - any other functions are added in the functionmap with a corresponding ID used by React code\n * - all other attributes are determined to be constants\n *\n * @class Module\n */\n\nexport default class Module {\n  name: string;\n  _functionMap: Array<() => any>;\n\n  /**\n   * Constructs a Module with a map of unique identifiers to its publicly\n   * accessible member functions.\n   * Take the unique name of the module as its only argument. This name will\n   * be used to call the module across the bridge.\n   */\n  constructor(name: string) {\n    if (name.startsWith('RCT')) {\n      name = name.substr(3);\n    }\n    this.name = name;\n    this._functionMap = [];\n  }\n\n  /**\n   * Return the human-friendly name of this module\n   */\n  getName(): string {\n    return this.name;\n  }\n\n  /**\n   * Extract the prototype methods that can be called across the bridge, as well\n   * as any instance variables.\n   * Returns an array containing the module name, as well as information on\n   * the methods and constants it exports, according to the format expected by\n   * the bridge.\n   * Note: If the prototype of the method is changed, this function is not\n   * guaranteed to be idempotent. Since this function is not manually called,\n   * this should not be a problem, but it may be a candidate for restructuring\n   * in the future.\n   */\n  _describe(): ModuleDescription {\n    const constants = {};\n    const functions = [];\n    const promiseFunctions = [];\n    const syncFunctions = []; // Not currently supported\n\n    let methodID = 0;\n    // Record prototype methods\n    const proto: any = Object.getPrototypeOf(this);\n    const protoMembers = Object.getOwnPropertyNames(proto);\n    for (const attr of protoMembers) {\n      const member = proto[attr];\n      // Skip any \"private\" entries prefixed with an underscore\n      if (attr[0] === '_' || attr === 'constructor' || typeof member !== 'function') {\n        continue;\n      }\n      let name = attr;\n\n      // by default functions are denoted as remote\n      // by prepending a $ onto the name the function is denoted as a special,\n      // async function that uses Promises\n      // the $ is removed from the name before registering with the react code\n      if (name[0] === '$') {\n        name = name.substring(1);\n        promiseFunctions.push(methodID);\n      }\n\n      // record the mapping from ID used by React to the real function\n      this._functionMap[methodID] = member;\n      functions.push(name);\n      methodID++;\n    }\n\n    // Record local properties\n    for (const attr in this) {\n      const member = (this: any)[attr];\n      if (attr[0] === '_' || typeof member === 'function') {\n        continue;\n      }\n      constants[attr] = member;\n    }\n\n    return [this.name, constants, functions, promiseFunctions, syncFunctions];\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * AsyncLocalStorage is an implementation of the AsyncStorage interface, built\n * on top of IndexedDB.\n * These methods are not intended to be called directly. Rather, they are\n * called remotely by the AsyncStorage module on the React side.\n * @class AsyncLocalStorage\n * @extends Module\n * @category runtime-modules\n */\nexport default class AsyncLocalStorage extends Module {\n  // React Native Context used\n  _rnctx: ReactNativeContext;\n  // Cache the database handle once it has been opened\n  _db: IDBDatabase | null;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('AsyncLocalStorage');\n    this._rnctx = rnctx;\n    this._db = null;\n  }\n\n  /**\n   * Open the IndexedDB where we are persisting our store.\n   * The schema we use allows us to implement a simple key-value store with\n   * IndexedDB's row-based semantics. We create a table called 'pairs' which\n   * contains objects of the form:\n   *   {key: string, value: any}\n   * The field called 'key' is uniquely indexed and used as our lookup value.\n   * _prepareDB() initializes this database if it has not yet been created,\n   * and returns a Promise that resolves with the database handle.\n   */\n  _prepareDB(): Promise<IDBDatabase> {\n    return new Promise((resolve, reject) => {\n      if (this._db) {\n        return resolve(this._db);\n      }\n      // Open the database called 'AsyncStorage'\n      const request = window.indexedDB.open('AsyncStorage', 1);\n      request.onerror = event => {\n        reject({\n          message: 'Error opening database',\n        });\n      };\n      request.onupgradeneeded = event => {\n        const db = event.target.result;\n        this._db = db;\n        // If the database has not been created yet, create an object store\n        // called 'pairs', with an index called 'key'\n        db.createObjectStore('pairs', {keyPath: 'key'});\n        resolve(db);\n      };\n      request.onsuccess = event => {\n        const db = event.target.result;\n        this._db = db;\n        resolve(db);\n      };\n    });\n  }\n\n  /**\n   * _getRow is a Promise wrapper around IndexedDb's get function.\n   * If the get succeeds, it resolves the Promise with the retrieved value.\n   * Attempting to get a row that does not exist should succeed, returning\n   * a value of undefined.\n   * If the get fails, it rejects the Promise with the error and the key.\n   */\n  _getRow(objectStore: IDBObjectStore, key: string): Promise<[string, ?string]> {\n    return new Promise((resolve, reject) => {\n      const request = objectStore.get(key);\n      request.onerror = event => {\n        reject({\n          message: event.target.error.name,\n          key: key,\n        });\n      };\n      request.onsuccess = event => {\n        const row = event.target.result;\n        if (!row) {\n          resolve([key, undefined]);\n        } else {\n          resolve([row.key, row.value]);\n        }\n      };\n    });\n  }\n\n  /**\n   * _putRow is a Promise wrapper around IndexedDb's put function.\n   * A put replaces a row if it previously existed, so it provides the behavior\n   * we need for setting a value in a key-value store.\n   * If the put succeeds, it resolves the Promise.\n   * If the put fails, it rejects the Promise with the error and the key.\n   */\n  _putRow(objectStore: IDBObjectStore, row: {[key: string]: string}): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const request = objectStore.put(row);\n      request.onerror = event => {\n        reject({\n          message: event.target.error.name,\n          key: row.key,\n        });\n      };\n      request.onsuccess = () => {\n        resolve();\n      };\n    });\n  }\n\n  /**\n   * _deleteRow is a Promise wrapper around IndexedDb's delete function.\n   * A delete should succeed even if the row does not exist.\n   * If the delete succeeds, it resolves the Promise.\n   * If the delete fails, it rejects the Promise with the error and the key.\n   */\n  _deleteRow(objectStore: IDBObjectStore, key: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const request = objectStore.delete(key);\n      request.onerror = event => {\n        reject({\n          message: event.target.error.name,\n          key: key,\n        });\n      };\n      request.onsuccess = () => {\n        resolve();\n      };\n    });\n  }\n\n  /**\n   * multiGet is a public API that fetches the values associated with a set of\n   * keys. Once they have been retrieved, the callback will be called with\n   * an array containing pairs of the form:\n   *   [key, value]\n   * arranged in the same order that the keys were.\n   * If one of the get operations fails, it will pass an error to the callback\n   * with the key that failed.\n   */\n  multiGet(keys: Array<string>, cb: number): void {\n    this._prepareDB()\n      .then(db => {\n        const transaction = db.transaction(['pairs']);\n        const objectStore = transaction.objectStore('pairs');\n        const gets = [];\n        keys.forEach(key => gets.push(this._getRow(objectStore, key)));\n        return Promise.all(gets);\n      })\n      .then(\n        rows => {\n          this._rnctx.invokeCallback(cb, [undefined, rows]);\n        },\n        err => {\n          this._rnctx.invokeCallback(cb, [err]);\n        }\n      );\n  }\n\n  /**\n   * multiSet is a public API that places key-value pairs into the database.\n   * It takes these pairs as an array of values in the form:\n   *   [key, value]\n   * If one of the set operations fails, it will pass an error to the callback\n   * with the key that failed.\n   */\n  multiSet(pairs: Array<[string, string]>, cb: number): void {\n    this._prepareDB()\n      .then(db => {\n        const transaction = db.transaction(['pairs'], 'readwrite');\n        const objectStore = transaction.objectStore('pairs');\n        const puts = [];\n        pairs.forEach(pair => {\n          const row = {key: pair[0], value: pair[1]};\n          puts.push(this._putRow(objectStore, row));\n        });\n        return Promise.all(puts);\n      })\n      .then(\n        () => {\n          this._rnctx.invokeCallback(cb, []);\n        },\n        err => {\n          this._rnctx.invokeCallback(cb, [err]);\n        }\n      );\n  }\n\n  /**\n   * multiRemove is a public API that removes entries from the database.\n   * If one of the remove operations fails, it will pass an error to the\n   * callback with the key that failed.\n   */\n  multiRemove(keys: Array<string>, cb: number): void {\n    this._prepareDB()\n      .then(db => {\n        const transaction = db.transaction(['pairs'], 'readwrite');\n        const objectStore = transaction.objectStore('pairs');\n        const deletes = [];\n        keys.forEach(key => deletes.push(this._deleteRow(objectStore, key)));\n        return Promise.all(deletes);\n      })\n      .then(\n        () => {\n          this._rnctx.invokeCallback(cb, []);\n        },\n        err => {\n          this._rnctx.invokeCallback(cb, [err]);\n        }\n      );\n  }\n\n  /**\n   * clear removes all rows from the database. It calls into IndexedDB's clear\n   * operation. Once it has completed, it calls the callback. If an error\n   * occurs, it will be passed to the callback.\n   */\n  clear(cb: number): void {\n    this._prepareDB()\n      .then(db => {\n        return new Promise((resolve, reject) => {\n          const transaction = db.transaction(['pairs'], 'readwrite');\n          const objectStore = transaction.objectStore('pairs');\n          const request = objectStore.clear();\n          request.onerror = event => {\n            reject({\n              message: event.target.error.name,\n            });\n          };\n          request.onsuccess = () => {\n            resolve();\n          };\n        });\n      })\n      .then(\n        () => {\n          this._rnctx.invokeCallback(cb, []);\n        },\n        err => {\n          this._rnctx.invokeCallback(cb, [err]);\n        }\n      );\n  }\n\n  /**\n   * getAllKeys retrieves all keys currently stored in the database.\n   * It uses an IndexedDB cursor to iterate through the entire table, without\n   * needing to allocate space for all of the values as well.\n   * When all keys have been fetched, they are passed to the callback.\n   * If an error occurs, it is passed to the callback.\n   */\n  getAllKeys(cb: number): void {\n    this._prepareDB()\n      .then(db => {\n        return new Promise((resolve, reject) => {\n          const transaction = db.transaction(['pairs']);\n          const objectStore = transaction.objectStore('pairs');\n          const request = objectStore.openCursor();\n          const keys = [];\n          request.onerror = event => {\n            reject({\n              message: event.target.error.name,\n            });\n          };\n          request.onsuccess = event => {\n            const cursor = event.target.result;\n            if (cursor) {\n              keys.push(cursor.key);\n              cursor.continue();\n            } else {\n              resolve(keys);\n            }\n          };\n        });\n      })\n      .then(\n        keys => {\n          this._rnctx.invokeCallback(cb, [undefined, keys]);\n        },\n        err => {\n          this._rnctx.invokeCallback(cb, [err]);\n        }\n      );\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nconst getGamepads = (navigator.getGamepads\n  ? navigator.getGamepads\n  : navigator.webkitGetGamepads ? navigator.webkitGetGamepads : () => []).bind(navigator);\n\nfunction extractInfo(gamepad) {\n  if (!gamepad) {\n    return null;\n  }\n\n  return {\n    index: gamepad.index,\n    id: gamepad.id,\n    buttons: gamepad.buttons.length,\n    axes: gamepad.axes.length,\n    hand: gamepad.hand || null,\n  };\n}\n\n/**\n * ControllerInfo exposes information about connected gamepads and controllers.\n * It should be used to respond to controller connect / disconnect events, and\n * extracting static information about controllers (unique identifiers, button\n * and axis counts, left vs right hand, etc).\n * For controller button states and poses, rely on React VR's input events and\n * ray caster systems.\n */\nexport default class ControllerInfo extends Module {\n  _rnctx: ReactNativeContext;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('ControllerInfo');\n    this._rnctx = rnctx;\n\n    window.addEventListener('gamepadconnected', e => {\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'controllerConnected',\n        extractInfo(e.gamepad),\n      ]);\n    });\n\n    window.addEventListener('gamepaddisconnected', e => {\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'controllerDisconnected',\n        extractInfo(e.gamepad),\n      ]);\n    });\n  }\n\n  /**\n   * Get the current information from all connected controllers.\n   * Resolves with an array of controller information objects.\n   */\n  $getControllers(success: number) {\n    const controllers = [];\n    const gamepads = getGamepads();\n    for (let i = 0; i < gamepads.length; i++) {\n      const gamepad = gamepads[i];\n      if (gamepad) {\n        controllers.push(extractInfo(gamepads[i]));\n      }\n    }\n    this._rnctx.invokeCallback(success, [controllers]);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\ntype Dimension = {\n  width: number,\n  height: number,\n  scale: number,\n  fontScale: number,\n  densityDpi: number,\n};\n\n/**\n * DeviceInfoModule Native Module\n * @class DeviceInfoModule\n * @extends Module\n */\nexport default class DeviceInfo extends Module {\n  Dimensions: {\n    windowPhysicalPixels: Dimension,\n    screenPhysicalPixels: Dimension,\n  };\n\n  constructor() {\n    super('DeviceInfo');\n    this.Dimensions = {\n      windowPhysicalPixels: {\n        width: 1024,\n        height: 1024,\n        scale: 1,\n        fontScale: 1,\n        densityDpi: 1,\n      },\n      screenPhysicalPixels: {\n        width: 1024,\n        height: 1024,\n        scale: 1,\n        fontScale: 1,\n        densityDpi: 1,\n      },\n    };\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\n/**\n * ExternalAssets configures the root path of resources imported via asset()\n * @class ExternalAssets\n * @extends Module\n */\n\nexport default class ExternalAssets extends Module {\n  assetRoot: string;\n\n  /**\n   * Constructs an ExternalAssets with a specific asset root\n   */\n  constructor(assetRoot: string) {\n    super('ExternalAssets');\n    this.assetRoot = assetRoot;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\ntype GlyphData = {\n  width: number,\n  height: number,\n  instructions: Array<Instruction>,\n  color?: string,\n};\n\ntype Instruction =\n  | ['begin']\n  | ['end']\n  | ['line', number, number, number, number]\n  | ['move', number, number]\n  | ['arc', number, number, number, number, number]\n  | ['rect', number, number, number, number];\n\nfunction drawGlyph(\n  context: CanvasRenderingContext2D,\n  instructions: Array<any>,\n  color: string = '#ffffff'\n) {\n  context.fillStyle = color;\n  for (let i = 0, length = instructions.length; i < length; i++) {\n    switch (instructions[i][0]) {\n      case 'move': {\n        const x = instructions[i][1];\n        const y = instructions[i][2];\n        context.moveTo(x, y);\n        break;\n      }\n      case 'line': {\n        const x = instructions[i][1];\n        const y = instructions[i][2];\n        context.lineTo(x, y);\n        break;\n      }\n      case 'arc': {\n        const x = instructions[i][1];\n        const y = instructions[i][2];\n        const radius = instructions[i][3];\n        const startAngle = instructions[i][4];\n        const endAngle = instructions[i][5];\n        const anticlockwise = !!instructions[i][6];\n        context.arc(x, y, radius, startAngle, endAngle, anticlockwise);\n        break;\n      }\n      case 'rect': {\n        const x = instructions[i][1];\n        const y = instructions[i][2];\n        const width = instructions[i][3];\n        const height = instructions[i][4];\n        context.rect(x, y, width, height);\n        break;\n      }\n      case 'begin':\n        context.beginPath();\n        break;\n      case 'end':\n        context.fill();\n        break;\n    }\n  }\n  if (instructions.length && instructions[instructions.length - 1][0] !== 'end') {\n    // Explicitly close any unclosed final path\n    context.fill();\n  }\n}\n\n/**\n * GlyphTextures Native Module\n * @class GlyphTextures\n * @extends Module\n */\nexport default class GlyphTextures extends Module {\n  _rnctx: ReactNativeContext;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('GlyphTextures');\n    this._rnctx = rnctx;\n  }\n\n  registerGlyph(name: string, glyph: GlyphData) {\n    const canvas = document.createElement('canvas');\n    canvas.width = glyph.width;\n    canvas.height = glyph.height;\n    const context = canvas.getContext('2d');\n    if (!context) {\n      throw new Error('Could not generate 2d context of canvas');\n    }\n    context.translate(0.5, 0.5);\n    drawGlyph(context, glyph.instructions, glyph.color);\n    const url = 'glyph/' + name;\n    this._rnctx.TextureManager.registerLocalTextureSource(url, canvas);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * History exposes the browser history stack to React\n * @class History\n * @extends Module\n */\nexport default class History extends Module {\n  _rnctx: ReactNativeContext;\n\n  /**\n   * Constructs a History with a specific React Native Context\n   * It also begins listening to any history popstate events, and fires them\n   * through the native event emitter\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('History');\n    this._rnctx = rnctx;\n\n    window.addEventListener('popstate', event => {\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'historyPopState',\n        {state: event.state},\n      ]);\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'url',\n        window.location.toString(),\n      ]);\n    });\n  }\n\n  /**\n   * Returns a Promise that is resolved with the current history length\n   * @param success - ID of success call back\n   */\n  $length(success: number) {\n    this._rnctx.invokeCallback(success, [window.history.length]);\n  }\n\n  /**\n   * Returns a Promise that is resolved with the current history state\n   * @param success - ID of success call back\n   */\n  $state(success: number) {\n    this._rnctx.invokeCallback(success, [window.history.state]);\n  }\n\n  /**\n   * Returns a Promise that is resolved after the history is moved back\n   * @param success - ID of success call back\n   */\n  $back(success: number) {\n    window.history.back();\n    this._rnctx.invokeCallback(success, [true]);\n  }\n\n  /**\n   * Returns a Promise that is resolved after the history is moved forward\n   * @param success - ID of success call back\n   */\n  $forward(success: number) {\n    window.history.forward();\n    this._rnctx.invokeCallback(success, [true]);\n  }\n\n  /**\n   * Takes a number of steps, and moves the history by that delta. Returns a\n   * Promise that is resolved after the move is completed.\n   * @param delta - The number of steps to move the current history state. A\n   *   positive number moves the history forward, a negative number moves the\n   *   history back.\n   * @param success - ID of success call back\n   */\n  $go(delta: number, success: number) {\n    window.history.go(delta);\n    this._rnctx.invokeCallback(success, [true]);\n  }\n\n  /**\n   * Push a new state onto the history stack. The first argument is the state\n   * object to push onto the stack; the second argument is the new title\n   * for the window. An optional third argument is the new URL to display\n   * in the navigation bar.\n   * @param state - An object to push onto the stack\n   * @param title - A string to set as the window title\n   * @param url (optional) - The URL to show in the navigation bar\n   * @param success - ID of success call back\n   * @param fail - ID of failure call back\n   */\n  $pushState(...args: Array<any>) {\n    if (args.length < 4) {\n      this._rnctx.invokeCallback(args[args.length - 1], [\n        new Error('pushState requires at least two arguments'),\n      ]);\n      return;\n    }\n    const state = args[0];\n    const title = args[1];\n    const success = args[args.length - 2];\n    const fail = args[args.length - 1];\n    const url = args.length === 4 ? undefined : args[2];\n    try {\n      window.history.pushState(state, title, url);\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'url',\n        window.location.toString(),\n      ]);\n      this._rnctx.invokeCallback(success, [true]);\n    } catch (e) {\n      this._rnctx.invokeCallback(fail, [e]);\n    }\n  }\n\n  /**\n   * Replace the top state onto the history stack. The first argument is the\n   * state object to place at the top of the stack; the second argument is the\n   * new title for the window. An optional third argument is the new URL to\n   * display in the navigation bar.\n   * @param state - An object to push onto the stack\n   * @param title - A string to set as the window title\n   * @param url (optional) - The URL to show in the navigation bar\n   * @param success - ID of success call back\n   * @param fail - ID of failure call back\n   */\n  $replaceState(...args: Array<any>) {\n    if (args.length < 4) {\n      this._rnctx.invokeCallback(args[args.length - 1], [\n        new Error('replaceState requires at least two arguments'),\n      ]);\n      return;\n    }\n    const state = args[0];\n    const title = args[1];\n    const success = args[args.length - 2];\n    const fail = args[args.length - 1];\n    const url = args.length === 4 ? undefined : args[2];\n    try {\n      window.history.pushState(state, title, url);\n      this._rnctx.invokeCallback(success, [true]);\n    } catch (e) {\n      this._rnctx.invokeCallback(fail, [e]);\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * LinkingManager implements linking behavior that can be triggered from React\n * the input.\n * This module isn't designed to be call directly but internally via the React\n * code\n * @class LinkingManager\n * @extends Module\n */\n\nconst initialURL = location.href;\n\nexport default class LinkingManager extends Module {\n  _rnctx: ReactNativeContext;\n\n  /**\n   * Constructs a LinkingManager with a specific React Native Context\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('LinkingManager');\n    this._rnctx = rnctx;\n  }\n\n  /**\n   * Trivially sets the window location to a new value.\n   * An asynchronous function that resolves a Promise on the other side of the\n   * bridge.\n   * the `$' start of the function denotes that the function should be described to\n   * the React code as a async function in which the final 2 paramaters will be the callback\n   * IDs for success and fail\n   * @param url - string of url\n   * @param success - ID of success call back\n   * @param fail - ID of fail call back\n   */\n  $openURL(url: string, success: number, fail: number) {\n    window.location = new URL(url, window.location).toString();\n    this._rnctx.invokeCallback(success, [true]);\n  }\n\n  /**\n   * Trivially accepts all URLs\n   * An asynchronous function that resolves a Promise on the other side of the\n   * bridge.\n   * the `$' start of the function denotes that the function should be described to\n   * the React code as a async function in which the final 2 paramaters will be the callback\n   * IDs for success and fail\n   * @param url - string of url\n   * @param success - ID of success call back\n   * @param fail - ID of fail call back\n   */\n  $canOpenURL(url: string, success: number, fail: number) {\n    this._rnctx.invokeCallback(success, [true]);\n  }\n\n  /**\n   * Get the original URL that the page was opened to.\n   * Returns a Promise that is resolved with the string of the initial URL.\n   * @param success - ID of success callback\n   */\n  $getInitialURL(success: number, fail: number) {\n    this._rnctx.invokeCallback(success, [initialURL]);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * Location implements window.location for the React context\n * @class Location\n * @extends Module\n */\nexport default class Location extends Module {\n  _rnctx: ReactNativeContext;\n  href: string;\n  protocol: string;\n  host: string;\n  hostname: string;\n  port: string;\n  search: string;\n  hash: string;\n  username: string | void;\n  password: string | void;\n\n  /**\n   * Constructs a Location Module with a specific React Native Context\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('Location');\n    this._rnctx = rnctx;\n\n    const location = window.location;\n    this.href = location.href;\n    this.protocol = location.protocol;\n    this.host = location.host;\n    this.hostname = location.hostname;\n    this.port = location.port;\n    this.search = location.search;\n    this.hash = location.hash;\n    this.username = location.username;\n    this.password = location.password;\n  }\n\n  /**\n   * Reload the current page. The optional boolean parameter determines whether\n   * the cache is bypassed.\n   * @param forceReload - If true, the cache will be ignored on reload\n   */\n  reload(forceReload: boolean) {\n    window.location.reload(forceReload);\n  }\n\n  /**\n   * Replace the current location, without affecting the History stack.\n   * @param replace - The location to navigate to\n   */\n  replace(url: string) {\n    window.location.replace(url);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n\ntype GeoOptions = {\n  timeout?: number,\n  maximumAge?: number,\n  enableHighAccuracy?: bool,\n};\n\nfunction encodePosition({coords, timestamp}) {\n  return {\n    coords: {\n      latitude: coords.latitude,\n      longitude: coords.longitude,\n      altitude: coords.altitude,\n      accuracy: coords.accuracy,\n      altitudeAccuracy: coords.altitudeAccuracy,\n      heading: coords.heading,\n    },\n    timestamp,\n  };\n}\n\n/**\n * LocationObserver Native Module\n * @class LocationObserver\n * @extends Module\n */\nexport default class LocationObserver extends Module {\n\n  _rnctx: ReactNativeContext;\n  _watchID: number | null;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('LocationObserver');\n    this._rnctx = rnctx;\n    this._watchID = null;\n  }\n\n  requestAuthorization() {\n    // Request the current position with no callback in order to trigger the\n    // permissions popup\n    navigator.geolocation.getCurrentPosition(() => {});\n  }\n\n  getCurrentPosition(options: GeoOptions, onSuccess: number, onError: number) {\n    if (!navigator.geolocation) {\n      this._rnctx.invokeCallback(onError, [])\n    }\n    const watchOptions = {};\n    if (typeof options.enableHighAccuracy === 'boolean') {\n      watchOptions.enableHighAccuracy = options.enableHighAccuracy;\n    }\n    if (typeof options.maximumAge === 'number') {\n      watchOptions.maximumAge = options.maximumAge;\n    }\n    if (typeof options.timeout === 'number') {\n      watchOptions.timeout = options.timeout;\n    }\n    navigator.geolocation.getCurrentPosition((pos) => {\n      this._rnctx.invokeCallback(onSuccess, [encodePosition(pos)]);\n    }, (err) => {\n      const {code, message} = err;\n      this._rnctx.invokeCallback(onError, [{code, message}]);\n    }, watchOptions);\n  }\n\n  startObserving(options: GeoOptions) {\n    if (this._watchID === null) {\n      const watchOptions = {};\n      if (typeof options.enableHighAccuracy === 'boolean') {\n        watchOptions.enableHighAccuracy = options.enableHighAccuracy;\n      }\n      if (typeof options.maximumAge === 'number') {\n        watchOptions.maximumAge = options.maximumAge;\n      }\n      if (typeof options.timeout === 'number') {\n        watchOptions.timeout = options.timeout;\n      }\n      this._watchID = navigator.geolocation.watchPosition((pos) => {\n        this._rnctx.callFunction(\n          'RCTDeviceEventEmitter',\n          'emit',\n          ['geolocationDidChange', encodePosition(pos)]\n        );\n      }, ({code, message}) => {\n        this._rnctx.callFunction(\n          'RCTDeviceEventEmitter',\n          'emit',\n          ['geolocationError', {code, message}]\n        );\n      }, watchOptions);\n    }\n  }\n\n  stopObserving() {\n    if (this._watchID !== null) {\n      navigator.geolocation.clearWatch(this._watchID);\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * Networking is an implementation of the networking interface used by React native.\n * These methods are not intended to be called directly. Rather, they are\n * called remotely by the Networking module on the React side.\n * The Networking module is used by React's implementation of fetch, etc\n * The functionality is built on fetch. The results of the actions and of the requests\n * are returned back to the react code via messages\n * @class Networking\n * @extends Module\n */\nexport default class Networking extends Module {\n  _rnctx: ReactNativeContext;\n\n  /**\n   * Constructs a Networking module with a specific React Native Context\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('Networking');\n    this._rnctx = rnctx;\n  }\n\n  /**\n   * Makes a request, and associates it with a specific requestId.\n   * @param method - request method, 'GET', 'POST', 'DELETE'\n   * @param url - url to make request to\n   * @param headers - request headers\n   * @param data - POST data to be sent alongside fetch\n   * @param responseType - 'base64' or 'text'\n   * @param useIncrementalUpdates - currently unused\n   * @param timeout - currently unused\n   */\n  sendRequest(\n    method: string,\n    url: string,\n    requestId: number,\n    headers: {[header: string]: any},\n    data: any,\n    responseType: string,\n    useIncrementalUpdates: any,\n    timeout: any\n  ) {\n    method = method.toUpperCase();\n    if (\n      method !== 'GET' &&\n      method !== 'POST' &&\n      method !== 'PATCH' &&\n      method !== 'PUT' &&\n      method !== 'DELETE'\n    ) {\n      throw new Error('Invalid method type');\n    }\n    const options: RequestOptions = {\n      method: method,\n      headers: headers,\n    };\n\n    // copy over the body data for POST/PATCH in the correct form\n    if ((method === 'POST' || method === 'PATCH') && data) {\n      if (data.string) {\n        options.body = data.string;\n      } else if (data.formData) {\n        const form = new FormData();\n        for (let i = 0; i < data.formData.length; i++) {\n          form.append(data.formData[i].fieldName, data.formData[i].string);\n        }\n        options.body = form;\n      } else if (data.string) {\n        options.body = data.string;\n      }\n    }\n\n    // Make the request and send the appropriate event information to react\n    // converting the data as required by `resposeType`\n    const request = new Request(url, options);\n    fetch(request, options)\n      .then(response => {\n        // first event is the response information which include the status\n        // this must happen firtst\n        this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n          'didReceiveNetworkResponse',\n          [requestId, response.status, []],\n        ]);\n        return responseType === 'text'\n          ? response.text().then(text => this._handleText(requestId, text))\n          : response.blob().then(blob => this._handleBase64(requestId, blob));\n      })\n      .catch(res => {\n        console.error(res);\n      });\n  }\n\n  /**\n   * handleText\n   * responseData for test encoding is received as a string and can be\n   * directly sent to React\n   * @param requestId - ID used by React\n   * @param responseData - string input returned by runtime fetch\n   */\n  _handleText(requestId: number, responseData: string) {\n    // send the string with request ID\n    this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n      'didReceiveNetworkData',\n      [requestId, responseData],\n    ]);\n    // notifiy the end of the data by sending response with null\n    this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n      'didCompleteNetworkResponse',\n      [requestId, null],\n    ]);\n  }\n\n  /**\n   * handleBase64\n   * responseData for base64 encoding is received as a blob which needs to be converted\n   * to base64 before sending over to React\n   * @param requestId - ID used by React\n   * @param responseData - Blob input returned by runtime fetch\n   */\n  _handleBase64(requestId: number, responseData: Blob) {\n    // use FileReader to convert blob to base64\n    const reader = new FileReader();\n    reader.onload = event => {\n      // move on 8 characters if base64 string is found\n      let index = event.target.result.indexOf(';base64,');\n      index = index >= 0 ? index + 8 : index;\n\n      // finally send the string with request ID\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'didReceiveNetworkData',\n        [requestId, event.target.result.slice(index)],\n      ]);\n      // notifiy the end of the data by sending response with null\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n        'didCompleteNetworkResponse',\n        [requestId, null],\n      ]);\n    };\n    reader.readAsDataURL(responseData);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Class of a dictionary mapping protocol and handle to any resource in ReactVR.\n * Then a React Native Components can use resources via a url like \"protocol://handle\".\n * Please don't use existing url protocols like http/https/... as resource's protocols,\n * which will causes naming collision when parsing a resourceUrl.\n * @constructor\n */\nexport function RCTResourceManager() {\n  this._resourceDictionaries = {};\n  this._resourceListener = {};\n  for (const protocol in this._validProtocols) {\n    this._resourceDictionaries[protocol] = {};\n  }\n}\n\nRCTResourceManager.prototype = Object.assign(Object.create(Object.prototype), {\n  constructor: RCTResourceManager,\n\n  /**\n   *  only protocols list here is valid in RCTResourceManager\n   */\n  _validProtocols: {\n    MonoTexture: 'MonoTexture',\n  },\n\n  /**\n   * Check if a protocol is valid in RCTResourceManager\n   * @param {string} protocol - The protocol.\n   * @return {bool} whether the protocol is valid\n   */\n  isValidProtocol(protocol) {\n    return this._validProtocols[protocol] === protocol;\n  },\n\n  /**\n   * check if a url is valid in RCTResourceManager\n   * @param {string} url - The url.\n   * @return {bool} whether the url is valid\n   */\n  isValidUrl: function(url) {\n    const parsed = this.parseUrl(url);\n    return parsed.protocol && parsed.handle && this.isValidProtocol(parsed.protocol);\n  },\n\n  /**\n   * Trying to parse a \"protocol://handle\" like url to protocol and handle\n   * @param {string} url - The url.\n   * @return {Object} The parsed result\n   */\n  parseUrl: function(url) {\n    let protocol = undefined;\n    let handle = undefined;\n    if (url) {\n      const spiltPos = url.indexOf('://');\n      if (spiltPos > -1) {\n        protocol = url.slice(0, spiltPos);\n        handle = url.slice(spiltPos + 3);\n      }\n    }\n    return {\n      protocol: protocol,\n      handle: handle,\n    };\n  },\n\n  /**\n   * generate the url a \"protocol://handle\"\n   * @param {string} protocol - The protocol.\n   * @param {string} handle - The handle.\n   * @return {string} The url\n   */\n  genUrl(protocol, handle) {\n    return protocol + '://' + handle;\n  },\n\n  /**\n   * register a listener to listen to the resource update of a url\n   * @param {string} url - The url.\n   * @param {function} listener - The listener call back.\n   */\n  addListener: function(url, listener) {\n    // register listener\n    if (listener) {\n      if (this._resourceListener[url] === undefined) {\n        this._resourceListener[url] = [];\n      }\n      if (this._resourceListener[url].indexOf(listener) === -1) {\n        this._resourceListener[url].push(listener);\n      }\n    }\n  },\n\n  /**\n   * remove a listener\n   * @param {string} url - The url.\n   * @param {function} listener - The listener call back.\n   */\n  removeListener: function(url, listener) {\n    const listenerArray = this._resourceListener[url];\n\n    if (listenerArray !== undefined && listener !== undefined) {\n      const index = listenerArray.indexOf(listener);\n      if (index !== -1) {\n        listenerArray.splice(index, 1);\n      }\n    }\n  },\n\n  _dispatchUpdate: function(protocol, handle) {\n    const url = this.genUrl(protocol, handle);\n    if (this._resourceListener[url]) {\n      for (let i = 0; i < this._resourceListener[url].length; i++) {\n        const listener = this._resourceListener[url][i];\n        listener(url);\n      }\n    }\n  },\n\n  /**\n   * Add a resource to handle\n   * @param {string} protocol - The protocol.\n   * @param {string} handle - The handle.\n   * @param {Object} resource - The resource\n   */\n  addResource: function(protocol, handle, resource) {\n    if (!this.isValidProtocol()) {\n      // don't add anything if the protocol is not valid\n      return;\n    }\n    this._resourceDictionaries[protocol][handle] = resource;\n    this._dispatchUpdate(protocol, handle);\n  },\n\n  /**\n   * Get the mapped resource, will return undefined if the resource does not exist\n   * @param {string} protocol - The protocol.\n   * @param {string} handle - The handle.\n   * @return {Object|undefined} The resource.\n   */\n  getResource: function(protocol, handle) {\n    if (!this.isValidProtocol()) {\n      // return undefined if the protocol is not valid\n      return undefined;\n    }\n    if (this._resourceDictionaries[protocol]) {\n      return this._resourceDictionaries[protocol][handle];\n    } else {\n      return undefined;\n    }\n  },\n\n  /**\n   * Remove the mapped resource\n   * @param {string} protocol - The protocol.\n   * @param {string} handle - The handle.\n   */\n  removeResource: function(protocol, handle) {\n    if (!this.isValidProtocol()) {\n      // don't add anything if the protocol is not valid\n      return;\n    }\n    if (this._resourceDictionaries[protocol]) {\n      delete this._resourceDictionaries[protocol][handle];\n      this._dispatchUpdate(protocol, handle);\n    }\n  },\n});\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nimport * as OVRUI from 'ovrui';\n\n/**\n * Input event manager for React Native. RCTInputControls emits input events to the current focused view.\n */\nexport function RCTInputControls(rnctx, guiSys) {\n  this._rnctx = rnctx;\n  this._guiSys = guiSys;\n\n  guiSys.eventDispatcher.addEventListener('GuiSysEvent', this._onInputEvent.bind(this));\n}\n\nRCTInputControls.prototype = Object.assign(Object.create(Object.prototype), {\n  constructor: RCTInputControls,\n\n  _onInputEvent: function(event) {\n    // This function only handle input events\n    if (event.eventType !== OVRUI.GuiSysEventType.INPUT_EVENT) {\n      return;\n    }\n\n    const target = this._rnctx.lastHit ? this._rnctx.getHitTag(this._rnctx.lastHit) : null;\n    if (target) {\n      const source = this._rnctx.lastSource;\n      // Dispatch input event to hit view\n      this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n        target,\n        'topInput',\n        {\n          inputEvent: event.args.inputEvent,\n          target: target,\n          source: source,\n        },\n      ]);\n\n      // TODO: Deprecate this, and use onInput to implement onClick\n      // Dispatch the onChange event\n      if (this.isConfirmEvent(event.args.inputEvent)) {\n        this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [target, 'topChange', []]);\n      }\n    }\n\n    // Dispatch event to registered callbacks\n    this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n      'onReceivedInputEvent',\n      event.args.inputEvent,\n      target,\n    ]);\n  },\n\n  /**\n   * These input event will be treated as confirm in React:\n   *  - A button on XBOX Gamepad\n   *  - Space button on keyboard\n   */\n  isConfirmEvent: function(event) {\n    // Currently WebVR can only recognize XboxController as 'standard' mapping. But it seems key 0 is the primary key\n    // for most gamepad controller. We should revisit this once the functionality of mapping is fully implemented.\n    return (\n      (event.type === 'GamepadInputEvent' && event.button === 0 && event.eventType === 'keyup') ||\n      (event.type === 'KeyboardInputEvent' && event.code === 'Space' && event.eventType === 'keyup')\n    );\n  },\n});\n","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Entry point for the OVRUI npm package\n */\n\nmodule.exports = require('./lib/OVRUI');\n","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MouseRayCaster = exports.RayCaster = exports.Player = exports.Overlay = exports.UIView = exports.UIViewEvent = exports.UIViewEventType = exports.GuiSysEvent = exports.GuiSysEventType = exports.GuiSys = exports.StereoBasicTextureMaterial = exports.SDFFONT_MARKER_COLOR = exports.TOP = exports.RIGHT_LINE = exports.RIGHT = exports.LEFT = exports.CENTER_LINE = exports.CENTER_FIXEDHEIGHT = exports.CENTER = exports.BOTTOM = exports.BASELINE = exports.wrapLines = exports.measureText = exports.addFontFallback = exports.loadFont = exports.BitmapFontGeometry = exports.VREffect = exports.VRControls = exports.DeviceOrientationControls = exports.AppControls = undefined;\n\nvar _AppControls = require('./Control/AppControls');\n\nvar _AppControls2 = _interopRequireDefault(_AppControls);\n\nvar _DeviceOrientationControls = require('./Control/DeviceOrientationControls');\n\nvar _DeviceOrientationControls2 = _interopRequireDefault(_DeviceOrientationControls);\n\nvar _VRControls = require('./Control/VRControls');\n\nvar _VRControls2 = _interopRequireDefault(_VRControls);\n\nvar _VREffect = require('./Control/VREffect');\n\nvar _VREffect2 = _interopRequireDefault(_VREffect);\n\nvar _SDFFont = require('./SDFFont/SDFFont');\n\nvar _StereoBasicTextureMaterial = require('./Materials/StereoBasicTextureMaterial');\n\nvar _StereoBasicTextureMaterial2 = _interopRequireDefault(_StereoBasicTextureMaterial);\n\nvar _GuiSys = require('./UIView/GuiSys');\n\nvar _GuiSys2 = _interopRequireDefault(_GuiSys);\n\nvar _GuiSysEvent = require('./UIView/GuiSysEvent');\n\nvar _UIView = require('./UIView/UIView');\n\nvar _UIView2 = _interopRequireDefault(_UIView);\n\nvar _Player = require('./Player/Player');\n\nvar _Player2 = _interopRequireDefault(_Player);\n\nvar _Overlay = require('./Player/Overlay');\n\nvar _Overlay2 = _interopRequireDefault(_Overlay);\n\nvar _RayCaster = require('./Inputs/RayCaster');\n\nvar _RayCaster2 = _interopRequireDefault(_RayCaster);\n\nvar _MouseRayCaster = require('./Inputs/MouseRayCaster');\n\nvar _MouseRayCaster2 = _interopRequireDefault(_MouseRayCaster);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Controls\nexports.AppControls = _AppControls2.default; /**\n                                              * Copyright (c) 2016-present, Facebook, Inc.\n                                              * All rights reserved.\n                                              *\n                                              * This source code is licensed under the BSD-style license found in the\n                                              * LICENSE file in the root directory of this source tree. An additional grant\n                                              * of patent rights can be found in the PATENTS file in the same directory.\n                                              *\n                                              * @providesModule OVRUI\n                                              */\n\n/**\n * Top level contents-to-export bridge for the npm package\n */\n\nexports.DeviceOrientationControls = _DeviceOrientationControls2.default;\nexports.VRControls = _VRControls2.default;\n\n// VR camera effect\n\nexports.VREffect = _VREffect2.default;\n\n// SDF Fonts\n\nexports.BitmapFontGeometry = _SDFFont.BitmapFontGeometry;\nexports.loadFont = _SDFFont.loadFont;\nexports.addFontFallback = _SDFFont.addFontFallback;\nexports.measureText = _SDFFont.measureText;\nexports.wrapLines = _SDFFont.wrapLines;\nexports.BASELINE = _SDFFont.BASELINE;\nexports.BOTTOM = _SDFFont.BOTTOM;\nexports.CENTER = _SDFFont.CENTER;\nexports.CENTER_FIXEDHEIGHT = _SDFFont.CENTER_FIXEDHEIGHT;\nexports.CENTER_LINE = _SDFFont.CENTER_LINE;\nexports.LEFT = _SDFFont.LEFT;\nexports.RIGHT = _SDFFont.RIGHT;\nexports.RIGHT_LINE = _SDFFont.RIGHT_LINE;\nexports.TOP = _SDFFont.TOP;\nexports.SDFFONT_MARKER_COLOR = _SDFFont.SDFFONT_MARKER_COLOR;\n\n// Stereo Material\n\nexports.StereoBasicTextureMaterial = _StereoBasicTextureMaterial2.default;\n\n// UIView\n\nexports.GuiSys = _GuiSys2.default;\nexports.GuiSysEventType = _GuiSysEvent.GuiSysEventType;\nexports.GuiSysEvent = _GuiSysEvent.GuiSysEvent;\nexports.UIViewEventType = _GuiSysEvent.UIViewEventType;\nexports.UIViewEvent = _GuiSysEvent.UIViewEvent;\nexports.UIView = _UIView2.default;\n\n// Player\n\nexports.Overlay = _Overlay2.default;\nexports.Player = _Player2.default;\n\n// Inputs\n\nexports.RayCaster = _RayCaster2.default;\nexports.MouseRayCaster = _MouseRayCaster2.default;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n// Selects controls based on platform and vr, applying them to object:\n// from DeviceOrientation for mobile, Pointer Lock on PC. Also applies VRControls.\n\nvar _DeviceOrientationControls = require('./DeviceOrientationControls');\n\nvar _DeviceOrientationControls2 = _interopRequireDefault(_DeviceOrientationControls);\n\nvar _MousePanControls = require('./MousePanControls');\n\nvar _MousePanControls2 = _interopRequireDefault(_MousePanControls);\n\nvar _VRControls = require('./VRControls');\n\nvar _VRControls2 = _interopRequireDefault(_VRControls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AppControls = function () {\n  function AppControls(camera, target) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, AppControls);\n\n    this._camera = camera;\n    this.nonVRControls = _DeviceOrientationControls2.default.isSupported() ? new _DeviceOrientationControls2.default(camera, target, options) : new _MousePanControls2.default(camera, target);\n  }\n\n  _createClass(AppControls, [{\n    key: 'setVRDisplay',\n    value: function setVRDisplay(vrDisplay) {\n      if (!vrDisplay) {\n        throw new Error('When calling setVRDisplay a non-null value is expected.');\n      }\n      this.vrControls = new _VRControls2.default(this._camera, vrDisplay);\n    }\n  }, {\n    key: 'setCamera',\n    value: function setCamera(camera) {\n      this._camera = camera;\n      this.nonVRControls.camera = camera;\n      this.nonVRControls.resetRotation(camera.rotation.x, camera.rotation.y, camera.rotation.z);\n      if (this.vrControls) {\n        this.vrControls.camera = camera;\n      }\n    }\n  }, {\n    key: 'resetRotation',\n    value: function resetRotation(x, y, z) {\n      this.nonVRControls.resetRotation(x, y, z);\n    }\n  }, {\n    key: 'frame',\n    value: function frame(frameOptions) {\n      if (this.vrControls) {\n        var display = this.vrControls.vrDisplay;\n        if (display && display.isPresenting) {\n          return this.vrControls.update(frameOptions);\n        }\n      }\n      this.nonVRControls.update(frameOptions);\n    }\n  }]);\n\n  return AppControls;\n}();\n\nexports.default = AppControls;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n/**\n * DeviceOrientationControls allows manipulation of the camera through a\n * mobile device's inner IMU.\n */\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _MobilePanControls = require('./MobilePanControls');\n\nvar _MobilePanControls2 = _interopRequireDefault(_MobilePanControls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Unit vectors\nvar Y_UNIT = new _ThreeShim2.default.Vector3(0, 1, 0);\nvar Z_UNIT = new _ThreeShim2.default.Vector3(0, 0, 1);\n\n// -Pi/2 rotation around the X-axis\nvar SCREEN_ROTATION = new _ThreeShim2.default.Quaternion(-Math.sqrt(0.5), 0, 0, Math.sqrt(0.5));\n// Preallocated Quaternion and Euler to use each frame.\nvar rotation = new _ThreeShim2.default.Quaternion();\nvar euler = new _ThreeShim2.default.Euler();\n\n// Return the current screen orientation (landscape, potrait, etc.)\nfunction getScreenOrientation() {\n  var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation || {};\n  var angle = orientation.angle || window.orientation || 0;\n  return _ThreeShim2.default.Math.degToRad(angle);\n}\n\nvar DeviceOrientationControls = function () {\n  function DeviceOrientationControls(camera, target) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, DeviceOrientationControls);\n\n    this.camera = camera;\n    this.enabled = true;\n    this.mobilePanControls = new _MobilePanControls2.default(camera, target);\n\n    // Allow touch panning unless explicitly disabled.\n    if (options.disableTouchPanning) {\n      this.mobilePanControls.enabled = false;\n    }\n\n    // Screen orientation (potrait, landscape, etc.), in radians\n    this.screenOrientation = getScreenOrientation();\n    // Device orientation (alpha, beta, gamma axes), in radians\n    this.deviceOrientation = {};\n\n    // Ensure that event handlers are bound to this object\n    this.orientationChangeHandler = this.orientationChangeHandler.bind(this);\n    this.deviceOrientationHandler = this.deviceOrientationHandler.bind(this);\n\n    this._initialAlpha = null;\n\n    this.connect();\n  }\n\n  _createClass(DeviceOrientationControls, [{\n    key: 'connect',\n    value: function connect() {\n      this.screenOrientation = getScreenOrientation();\n      window.addEventListener('orientationchange', this.orientationChangeHandler);\n      window.addEventListener('deviceorientation', this.deviceOrientationHandler);\n      this.enabled = true;\n    }\n  }, {\n    key: 'disconnect',\n    value: function disconnect() {\n      window.removeEventListener('orientationchange', this.orientationChangeHandler);\n      window.removeEventListener('deviceorientation', this.deviceOrientationHandler);\n      this.enabled = false;\n    }\n  }, {\n    key: 'orientationChangeHandler',\n    value: function orientationChangeHandler() {\n      this.screenOrientation = getScreenOrientation();\n    }\n  }, {\n    key: 'deviceOrientationHandler',\n    value: function deviceOrientationHandler(event) {\n      var alpha = _ThreeShim2.default.Math.degToRad(event.alpha);\n      var beta = _ThreeShim2.default.Math.degToRad(event.beta);\n      var gamma = _ThreeShim2.default.Math.degToRad(event.gamma);\n      if (this._initialAlpha === null) {\n        this._initialAlpha = alpha - getScreenOrientation();\n      }\n      this.deviceOrientation.alpha = alpha;\n      this.deviceOrientation.beta = beta;\n      this.deviceOrientation.gamma = gamma;\n    }\n  }, {\n    key: 'resetRotation',\n    value: function resetRotation(x, y, z) {\n      var quaternion = this.camera.quaternion;\n      euler.set(x, y, -z, 'YXZ');\n      quaternion.setFromEuler(euler);\n\n      this.deviceOrientation = {};\n      this._initialAlpha = null;\n\n      if (this.mobilePanControls.enabled) {\n        this.mobilePanControls.resetRotation(0, 0, 0);\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.enabled) {\n        return;\n      }\n      var alpha = this.deviceOrientation.alpha || 0;\n      var beta = this.deviceOrientation.beta || 0;\n      var gamma = this.deviceOrientation.gamma || 0;\n      var orient = this.screenOrientation;\n\n      // Update the camera rotation quaternion\n      var quaternion = this.camera.quaternion;\n      euler.set(beta, alpha, -gamma, 'YXZ');\n      quaternion.setFromEuler(euler);\n      if (this._initialAlpha !== null) {\n        rotation.setFromAxisAngle(Y_UNIT, -this._initialAlpha);\n        quaternion.premultiply(rotation);\n      }\n      quaternion.multiply(SCREEN_ROTATION); // rotate from device top to a screen normal\n      rotation.setFromAxisAngle(Z_UNIT, -orient);\n      quaternion.multiply(rotation); // Account for system-level screen rotation\n\n      if (this.mobilePanControls.enabled) {\n        this.mobilePanControls.update();\n      }\n    }\n  }], [{\n    key: 'isSupported',\n    value: function isSupported() {\n      // CONSIDER: Detecting non-mobile scenarios where device orientation can be used (laptops, some tablets)\n      return 'DeviceOrientationEvent' in window && /Mobi/i.test(navigator.userAgent) && !/OculusBrowser/i.test(navigator.userAgent);\n    }\n  }]);\n\n  return DeviceOrientationControls;\n}();\n\nexports.default = DeviceOrientationControls;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * Shims Three.js dependencies based upon the environment.\n * This allows us to use the `three` package with the npm build, and the THREE\n * global variable when using the single-file distribution.\n */\n\n// Intentionally using require() syntax here, so it can be replaced at build time\nvar THREE = window && window.THREE || require('three');\n\nif (!THREE) {\n  throw new Error(\"Could not find Three.js! Make sure you've included the appropriate .js file\");\n}\n\nexports.default = THREE;","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.THREE = global.THREE || {})));\n}(this, (function (exports) { 'use strict';\n\n\t// Polyfills\n\n\tif ( Number.EPSILON === undefined ) {\n\n\t\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n\t}\n\n\tif ( Number.isInteger === undefined ) {\n\n\t\t// Missing in IE\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\t\tNumber.isInteger = function ( value ) {\n\n\t\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t\t};\n\n\t}\n\n\t//\n\n\tif ( Math.sign === undefined ) {\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\t\tMath.sign = function ( x ) {\n\n\t\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t\t};\n\n\t}\n\n\tif ( Function.prototype.name === undefined ) {\n\n\t\t// Missing in IE\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\t\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tif ( Object.assign === undefined ) {\n\n\t\t// Missing in IE\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t\t( function () {\n\n\t\t\tObject.assign = function ( target ) {\n\n\t\t\t\t'use strict';\n\n\t\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t\t}\n\n\t\t\t\tvar output = Object( target );\n\n\t\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\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\treturn output;\n\n\t\t\t};\n\n\t\t} )();\n\n\t}\n\n\t/**\n\t * https://github.com/mrdoob/eventdispatcher.js/\n\t */\n\n\tfunction EventDispatcher() {}\n\n\tObject.assign( EventDispatcher.prototype, {\n\n\t\taddEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\t\tvar listeners = this._listeners;\n\n\t\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\t\tlisteners[ type ] = [];\n\n\t\t\t}\n\n\t\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\t\tlisteners[ type ].push( listener );\n\n\t\t\t}\n\n\t\t},\n\n\t\thasEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) return false;\n\n\t\t\tvar listeners = this._listeners;\n\n\t\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t\t},\n\n\t\tremoveEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) return;\n\n\t\t\tvar listeners = this._listeners;\n\t\t\tvar listenerArray = listeners[ type ];\n\n\t\t\tif ( listenerArray !== undefined ) {\n\n\t\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tdispatchEvent: function ( event ) {\n\n\t\t\tif ( this._listeners === undefined ) return;\n\n\t\t\tvar listeners = this._listeners;\n\t\t\tvar listenerArray = listeners[ event.type ];\n\n\t\t\tif ( listenerArray !== undefined ) {\n\n\t\t\t\tevent.target = this;\n\n\t\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tvar REVISION = '87';\n\tvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\n\tvar CullFaceNone = 0;\n\tvar CullFaceBack = 1;\n\tvar CullFaceFront = 2;\n\tvar CullFaceFrontBack = 3;\n\tvar FrontFaceDirectionCW = 0;\n\tvar FrontFaceDirectionCCW = 1;\n\tvar BasicShadowMap = 0;\n\tvar PCFShadowMap = 1;\n\tvar PCFSoftShadowMap = 2;\n\tvar FrontSide = 0;\n\tvar BackSide = 1;\n\tvar DoubleSide = 2;\n\tvar FlatShading = 1;\n\tvar SmoothShading = 2;\n\tvar NoColors = 0;\n\tvar FaceColors = 1;\n\tvar VertexColors = 2;\n\tvar NoBlending = 0;\n\tvar NormalBlending = 1;\n\tvar AdditiveBlending = 2;\n\tvar SubtractiveBlending = 3;\n\tvar MultiplyBlending = 4;\n\tvar CustomBlending = 5;\n\tvar AddEquation = 100;\n\tvar SubtractEquation = 101;\n\tvar ReverseSubtractEquation = 102;\n\tvar MinEquation = 103;\n\tvar MaxEquation = 104;\n\tvar ZeroFactor = 200;\n\tvar OneFactor = 201;\n\tvar SrcColorFactor = 202;\n\tvar OneMinusSrcColorFactor = 203;\n\tvar SrcAlphaFactor = 204;\n\tvar OneMinusSrcAlphaFactor = 205;\n\tvar DstAlphaFactor = 206;\n\tvar OneMinusDstAlphaFactor = 207;\n\tvar DstColorFactor = 208;\n\tvar OneMinusDstColorFactor = 209;\n\tvar SrcAlphaSaturateFactor = 210;\n\tvar NeverDepth = 0;\n\tvar AlwaysDepth = 1;\n\tvar LessDepth = 2;\n\tvar LessEqualDepth = 3;\n\tvar EqualDepth = 4;\n\tvar GreaterEqualDepth = 5;\n\tvar GreaterDepth = 6;\n\tvar NotEqualDepth = 7;\n\tvar MultiplyOperation = 0;\n\tvar MixOperation = 1;\n\tvar AddOperation = 2;\n\tvar NoToneMapping = 0;\n\tvar LinearToneMapping = 1;\n\tvar ReinhardToneMapping = 2;\n\tvar Uncharted2ToneMapping = 3;\n\tvar CineonToneMapping = 4;\n\tvar UVMapping = 300;\n\tvar CubeReflectionMapping = 301;\n\tvar CubeRefractionMapping = 302;\n\tvar EquirectangularReflectionMapping = 303;\n\tvar EquirectangularRefractionMapping = 304;\n\tvar SphericalReflectionMapping = 305;\n\tvar CubeUVReflectionMapping = 306;\n\tvar CubeUVRefractionMapping = 307;\n\tvar RepeatWrapping = 1000;\n\tvar ClampToEdgeWrapping = 1001;\n\tvar MirroredRepeatWrapping = 1002;\n\tvar NearestFilter = 1003;\n\tvar NearestMipMapNearestFilter = 1004;\n\tvar NearestMipMapLinearFilter = 1005;\n\tvar LinearFilter = 1006;\n\tvar LinearMipMapNearestFilter = 1007;\n\tvar LinearMipMapLinearFilter = 1008;\n\tvar UnsignedByteType = 1009;\n\tvar ByteType = 1010;\n\tvar ShortType = 1011;\n\tvar UnsignedShortType = 1012;\n\tvar IntType = 1013;\n\tvar UnsignedIntType = 1014;\n\tvar FloatType = 1015;\n\tvar HalfFloatType = 1016;\n\tvar UnsignedShort4444Type = 1017;\n\tvar UnsignedShort5551Type = 1018;\n\tvar UnsignedShort565Type = 1019;\n\tvar UnsignedInt248Type = 1020;\n\tvar AlphaFormat = 1021;\n\tvar RGBFormat = 1022;\n\tvar RGBAFormat = 1023;\n\tvar LuminanceFormat = 1024;\n\tvar LuminanceAlphaFormat = 1025;\n\tvar RGBEFormat = RGBAFormat;\n\tvar DepthFormat = 1026;\n\tvar DepthStencilFormat = 1027;\n\tvar RGB_S3TC_DXT1_Format = 2001;\n\tvar RGBA_S3TC_DXT1_Format = 2002;\n\tvar RGBA_S3TC_DXT3_Format = 2003;\n\tvar RGBA_S3TC_DXT5_Format = 2004;\n\tvar RGB_PVRTC_4BPPV1_Format = 2100;\n\tvar RGB_PVRTC_2BPPV1_Format = 2101;\n\tvar RGBA_PVRTC_4BPPV1_Format = 2102;\n\tvar RGBA_PVRTC_2BPPV1_Format = 2103;\n\tvar RGB_ETC1_Format = 2151;\n\tvar LoopOnce = 2200;\n\tvar LoopRepeat = 2201;\n\tvar LoopPingPong = 2202;\n\tvar InterpolateDiscrete = 2300;\n\tvar InterpolateLinear = 2301;\n\tvar InterpolateSmooth = 2302;\n\tvar ZeroCurvatureEnding = 2400;\n\tvar ZeroSlopeEnding = 2401;\n\tvar WrapAroundEnding = 2402;\n\tvar TrianglesDrawMode = 0;\n\tvar TriangleStripDrawMode = 1;\n\tvar TriangleFanDrawMode = 2;\n\tvar LinearEncoding = 3000;\n\tvar sRGBEncoding = 3001;\n\tvar GammaEncoding = 3007;\n\tvar RGBEEncoding = 3002;\n\tvar LogLuvEncoding = 3003;\n\tvar RGBM7Encoding = 3004;\n\tvar RGBM16Encoding = 3005;\n\tvar RGBDEncoding = 3006;\n\tvar BasicDepthPacking = 3200;\n\tvar RGBADepthPacking = 3201;\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tvar _Math = {\n\n\t\tDEG2RAD: Math.PI / 180,\n\t\tRAD2DEG: 180 / Math.PI,\n\n\t\tgenerateUUID: function () {\n\n\t\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\t\tvar uuid = new Array( 36 );\n\t\t\tvar rnd = 0, r;\n\n\t\t\treturn function generateUUID() {\n\n\t\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn uuid.join( '' );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclamp: function ( value, min, max ) {\n\n\t\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t\t},\n\n\t\t// compute euclidian modulo of m % n\n\t\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\t\teuclideanModulo: function ( n, m ) {\n\n\t\t\treturn ( ( n % m ) + m ) % m;\n\n\t\t},\n\n\t\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\t\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t\t},\n\n\t\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\t\tlerp: function ( x, y, t ) {\n\n\t\t\treturn ( 1 - t ) * x + t * y;\n\n\t\t},\n\n\t\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\t\tsmoothstep: function ( x, min, max ) {\n\n\t\t\tif ( x <= min ) return 0;\n\t\t\tif ( x >= max ) return 1;\n\n\t\t\tx = ( x - min ) / ( max - min );\n\n\t\t\treturn x * x * ( 3 - 2 * x );\n\n\t\t},\n\n\t\tsmootherstep: function ( x, min, max ) {\n\n\t\t\tif ( x <= min ) return 0;\n\t\t\tif ( x >= max ) return 1;\n\n\t\t\tx = ( x - min ) / ( max - min );\n\n\t\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t\t},\n\n\t\t// Random integer from <low, high> interval\n\n\t\trandInt: function ( low, high ) {\n\n\t\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t\t},\n\n\t\t// Random float from <low, high> interval\n\n\t\trandFloat: function ( low, high ) {\n\n\t\t\treturn low + Math.random() * ( high - low );\n\n\t\t},\n\n\t\t// Random float from <-range/2, range/2> interval\n\n\t\trandFloatSpread: function ( range ) {\n\n\t\t\treturn range * ( 0.5 - Math.random() );\n\n\t\t},\n\n\t\tdegToRad: function ( degrees ) {\n\n\t\t\treturn degrees * _Math.DEG2RAD;\n\n\t\t},\n\n\t\tradToDeg: function ( radians ) {\n\n\t\t\treturn radians * _Math.RAD2DEG;\n\n\t\t},\n\n\t\tisPowerOfTwo: function ( value ) {\n\n\t\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t\t},\n\n\t\tnearestPowerOfTwo: function ( value ) {\n\n\t\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t\t},\n\n\t\tnextPowerOfTwo: function ( value ) {\n\n\t\t\tvalue --;\n\t\t\tvalue |= value >> 1;\n\t\t\tvalue |= value >> 2;\n\t\t\tvalue |= value >> 4;\n\t\t\tvalue |= value >> 8;\n\t\t\tvalue |= value >> 16;\n\t\t\tvalue ++;\n\n\t\t\treturn value;\n\n\t\t}\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author egraether / http://egraether.com/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t */\n\n\tfunction Vector2( x, y ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\n\t}\n\n\tObject.defineProperties( Vector2.prototype, {\n\n\t\t\"width\" : {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.x;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis.x = value;\n\n\t\t\t}\n\n\t\t},\n\n\t\t\"height\" : {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.y;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis.y = value;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Vector2.prototype, {\n\n\t\tisVector2: true,\n\n\t\tset: function ( x, y ) {\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( v ) {\n\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivide: function ( v ) {\n\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// assumes min < max, componentwise\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min = new Vector2();\n\t\t\tvar max = new Vector2();\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tmin.set( minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclampLength: function ( min, max ) {\n\n\t\t\tvar length = this.length();\n\n\t\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t\t},\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t\t},\n\n\t\tlengthManhattan: function() {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() || 1 );\n\n\t\t},\n\n\t\tangle: function () {\n\n\t\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\t\treturn angle;\n\n\t\t},\n\n\t\tdistanceTo: function ( v ) {\n\n\t\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t\t},\n\n\t\tdistanceToSquared: function ( v ) {\n\n\t\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\t\treturn dx * dx + dy * dy;\n\n\t\t},\n\n\t\tdistanceToManhattan: function ( v ) {\n\n\t\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.normalize().multiplyScalar( length );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX( index );\n\t\t\tthis.y = attribute.getY( index );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateAround: function ( center, angle ) {\n\n\t\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\t\tvar x = this.x - center.x;\n\t\t\tvar y = this.y - center.y;\n\n\t\t\tthis.x = x * c - y * s + center.x;\n\t\t\tthis.y = x * s + y * c + center.y;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author szimek / https://github.com/szimek/\n\t */\n\n\tvar textureId = 0;\n\n\tfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = _Math.generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\t\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\t\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\t\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\t\tthis.format = format !== undefined ? format : RGBAFormat;\n\t\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\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 !== undefined ? encoding : LinearEncoding;\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t}\n\n\tTexture.DEFAULT_IMAGE = undefined;\n\tTexture.DEFAULT_MAPPING = UVMapping;\n\n\tObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\t\tset: function ( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Texture.prototype, EventDispatcher.prototype, {\n\n\t\tconstructor: Texture,\n\n\t\tisTexture: true,\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.name = source.name;\n\n\t\t\tthis.image = source.image;\n\t\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\t\tthis.mapping = source.mapping;\n\n\t\t\tthis.wrapS = source.wrapS;\n\t\t\tthis.wrapT = source.wrapT;\n\n\t\t\tthis.magFilter = source.magFilter;\n\t\t\tthis.minFilter = source.minFilter;\n\n\t\t\tthis.anisotropy = source.anisotropy;\n\n\t\t\tthis.format = source.format;\n\t\t\tthis.type = source.type;\n\n\t\t\tthis.offset.copy( source.offset );\n\t\t\tthis.repeat.copy( source.repeat );\n\n\t\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\t\tthis.flipY = source.flipY;\n\t\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\t\tthis.encoding = source.encoding;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t\t}\n\n\t\t\tfunction getDataURL( image ) {\n\n\t\t\t\tvar canvas;\n\n\t\t\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\t\t\tcanvas = image;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\t\tcanvas.width = image.width;\n\t\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\t\tvar context = canvas.getContext( '2d' );\n\n\t\t\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar output = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Texture',\n\t\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t\t},\n\n\t\t\t\tuuid: this.uuid,\n\t\t\t\tname: this.name,\n\n\t\t\t\tmapping: this.mapping,\n\n\t\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\t\tminFilter: this.minFilter,\n\t\t\t\tmagFilter: this.magFilter,\n\t\t\t\tanisotropy: this.anisotropy,\n\n\t\t\t\tflipY: this.flipY\n\t\t\t};\n\n\t\t\tif ( this.image !== undefined ) {\n\n\t\t\t\t// TODO: Move to THREE.Image\n\n\t\t\t\tvar image = this.image;\n\n\t\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t\t}\n\n\t\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\toutput.image = image.uuid;\n\n\t\t\t}\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t\treturn output;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t},\n\n\t\ttransformUv: function ( uv ) {\n\n\t\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\t\tuv.multiply( this.repeat );\n\t\t\tuv.add( this.offset );\n\n\t\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.flipY ) {\n\n\t\t\t\tuv.y = 1 - uv.y;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author egraether / http://egraether.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction Vector4( x, y, z, w ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\t\tthis.w = ( w !== undefined ) ? w : 1;\n\n\t}\n\n\tObject.assign( Vector4.prototype, {\n\n\t\tisVector4: true,\n\n\t\tset: function ( x, y, z, w ) {\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\t\t\tthis.w = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( z ) {\n\n\t\t\tthis.z = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetW: function ( w ) {\n\n\t\t\tthis.w = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tcase 2: this.z = value; break;\n\t\t\t\tcase 3: this.w = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tcase 2: return this.z;\n\t\t\t\tcase 3: return this.w;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\t\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\t\t\tthis.w += v.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\t\t\tthis.w += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\t\t\tthis.w = a.w + b.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\t\t\tthis.w += v.w * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\t\t\tthis.w -= v.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\t\t\tthis.w -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\t\t\tthis.w = a.w - b.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( m ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t\t// q is assumed to be normalized\n\n\t\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\t\tif ( s < 0.0001 ) {\n\n\t\t\t\t this.x = 1;\n\t\t\t\t this.y = 0;\n\t\t\t\t this.z = 0;\n\n\t\t\t} else {\n\n\t\t\t\t this.x = q.x / s;\n\t\t\t\t this.y = q.y / s;\n\t\t\t\t this.z = q.z / s;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\t\tte = m.elements,\n\n\t\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t\t// singularity found\n\t\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t\t}\n\n\t\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\t\tangle = Math.PI;\n\n\t\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\t\ty = xy / x;\n\t\t\t\t\t\tz = xz / x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0;\n\t\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\t\tx = xy / y;\n\t\t\t\t\t\tz = yz / y;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\t\tx = xz / z;\n\t\t\t\t\t\ty = yz / z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.set( x, y, z, angle );\n\n\t\t\t\treturn this; // return 180 deg rotation\n\n\t\t\t}\n\n\t\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\t\tvar 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\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t\t// caught by singularity test above, but I've left it in just in case\n\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\t\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\t\t\tthis.z = Math.min( this.z, v.z );\n\t\t\tthis.w = Math.min( this.w, v.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\t\t\tthis.z = Math.max( this.z, v.z );\n\t\t\tthis.w = Math.max( this.w, v.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// assumes min < max, componentwise\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min, max;\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tif ( min === undefined ) {\n\n\t\t\t\t\tmin = new Vector4();\n\t\t\t\t\tmax = new Vector4();\n\n\t\t\t\t}\n\n\t\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclampLength: function ( min, max ) {\n\n\t\t\tvar length = this.length();\n\n\t\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t\t},\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\t\t\tthis.z = Math.floor( this.z );\n\t\t\tthis.w = Math.floor( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\t\t\tthis.z = Math.ceil( this.z );\n\t\t\tthis.w = Math.ceil( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\t\t\tthis.z = Math.round( this.z );\n\t\t\tthis.w = Math.round( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\t\t\tthis.z = - this.z;\n\t\t\tthis.w = - this.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t\t},\n\n\t\tlengthManhattan: function () {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() || 1 );\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.normalize().multiplyScalar( length );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\t\t\tthis.z = array[ offset + 2 ];\n\t\t\tthis.w = array[ offset + 3 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\t\t\tarray[ offset + 2 ] = this.z;\n\t\t\tarray[ offset + 3 ] = this.w;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX( index );\n\t\t\tthis.y = attribute.getY( index );\n\t\t\tthis.z = attribute.getZ( index );\n\t\t\tthis.w = attribute.getW( index );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author szimek / https://github.com/szimek/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author Marius Kintel / https://github.com/kintel\n\t */\n\n\t/*\n\t In options, we can specify:\n\t * Texture parameters for an auto-generated target texture\n\t * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n\t*/\n\tfunction WebGLRenderTarget( width, height, options ) {\n\n\t\tthis.uuid = _Math.generateUUID();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\toptions = options || {};\n\n\t\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\t\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tObject.assign( WebGLRenderTarget.prototype, EventDispatcher.prototype, {\n\n\t\tisWebGLRenderTarget: true,\n\n\t\tsetSize: function ( width, height ) {\n\n\t\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\n\t\t\t\tthis.dispose();\n\n\t\t\t}\n\n\t\t\tthis.viewport.set( 0, 0, width, height );\n\t\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\n\t\t\tthis.viewport.copy( source.viewport );\n\n\t\t\tthis.texture = source.texture.clone();\n\n\t\t\tthis.depthBuffer = source.depthBuffer;\n\t\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\t\tthis.depthTexture = source.depthTexture;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com\n\t */\n\n\tfunction WebGLRenderTargetCube( width, height, options ) {\n\n\t\tWebGLRenderTarget.call( this, width, height, options );\n\n\t\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\t\tthis.activeMipMapLevel = 0;\n\n\t}\n\n\tWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\n\tWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\n\tWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Quaternion( x, y, z, w ) {\n\n\t\tthis._x = x || 0;\n\t\tthis._y = y || 0;\n\t\tthis._z = z || 0;\n\t\tthis._w = ( w !== undefined ) ? w : 1;\n\n\t}\n\n\tObject.assign( Quaternion, {\n\n\t\tslerp: function ( qa, qb, qm, t ) {\n\n\t\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t\t},\n\n\t\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\t\tvar s = 1 - t,\n\n\t\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t\t}\n\n\t\t\t\tvar tDir = t * dir;\n\n\t\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t\t// Normalize in case we just did a lerp:\n\t\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\t\tx0 *= f;\n\t\t\t\t\ty0 *= f;\n\t\t\t\t\tz0 *= f;\n\t\t\t\t\tw0 *= f;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdst[ dstOffset ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( Quaternion.prototype, {\n\n\t\tx: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._x;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._x = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\ty: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._y;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._y = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\tz: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._z;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._z = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\tw: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._w;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._w = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Quaternion.prototype, {\n\n\t\tset: function ( x, y, z, w ) {\n\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._w = w;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t\t},\n\n\t\tcopy: function ( quaternion ) {\n\n\t\t\tthis._x = quaternion.x;\n\t\t\tthis._y = quaternion.y;\n\t\t\tthis._z = quaternion.z;\n\t\t\tthis._w = quaternion.w;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromEuler: function ( euler, update ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t\t//\tcontent/SpinCalc.m\n\n\t\t\tvar cos = Math.cos;\n\t\t\tvar sin = Math.sin;\n\n\t\t\tvar c1 = cos( x / 2 );\n\t\t\tvar c2 = cos( y / 2 );\n\t\t\tvar c3 = cos( z / 2 );\n\n\t\t\tvar s1 = sin( x / 2 );\n\t\t\tvar s2 = sin( y / 2 );\n\t\t\tvar s3 = sin( z / 2 );\n\n\t\t\tif ( order === 'XYZ' ) {\n\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\n\t\t\t} else if ( order === 'YXZ' ) {\n\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\n\t\t\t} else if ( order === 'ZXY' ) {\n\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\n\t\t\t} else if ( order === 'ZYX' ) {\n\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\n\t\t\t} else if ( order === 'YZX' ) {\n\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\n\t\t\t} else if ( order === 'XZY' ) {\n\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\n\t\t\t}\n\n\t\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t\t// assumes axis is normalized\n\n\t\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\t\tthis._x = axis.x * s;\n\t\t\tthis._y = axis.y * s;\n\t\t\tthis._z = axis.z * s;\n\t\t\tthis._w = Math.cos( halfAngle );\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromRotationMatrix: function ( m ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar te = m.elements,\n\n\t\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\t\ttrace = m11 + m22 + m33,\n\t\t\t\ts;\n\n\t\t\tif ( trace > 0 ) {\n\n\t\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\t\tthis._w = 0.25 / s;\n\t\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\t\tthis._x = 0.25 * s;\n\t\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t\t} else if ( m22 > m33 ) {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\t\tthis._y = 0.25 * s;\n\t\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t\t} else {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\t\tthis._z = 0.25 * s;\n\n\t\t\t}\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromUnitVectors: function () {\n\n\t\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\t\tvar v1 = new Vector3();\n\t\t\tvar r;\n\n\t\t\tvar EPS = 0.000001;\n\n\t\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\t\tif ( r < EPS ) {\n\n\t\t\t\t\tr = 0;\n\n\t\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t\t}\n\n\t\t\t\tthis._x = v1.x;\n\t\t\t\tthis._y = v1.y;\n\t\t\t\tthis._z = v1.z;\n\t\t\t\tthis._w = r;\n\n\t\t\t\treturn this.normalize();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tinverse: function () {\n\n\t\t\treturn this.conjugate().normalize();\n\n\t\t},\n\n\t\tconjugate: function () {\n\n\t\t\tthis._x *= - 1;\n\t\t\tthis._y *= - 1;\n\t\t\tthis._z *= - 1;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\tvar l = this.length();\n\n\t\t\tif ( l === 0 ) {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = 1;\n\n\t\t\t} else {\n\n\t\t\t\tl = 1 / l;\n\n\t\t\t\tthis._x = this._x * l;\n\t\t\t\tthis._y = this._y * l;\n\t\t\t\tthis._z = this._z * l;\n\t\t\t\tthis._w = this._w * l;\n\n\t\t\t}\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( q, p ) {\n\n\t\t\tif ( p !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t\t}\n\n\t\t\treturn this.multiplyQuaternions( this, q );\n\n\t\t},\n\n\t\tpremultiply: function ( q ) {\n\n\t\t\treturn this.multiplyQuaternions( q, this );\n\n\t\t},\n\n\t\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tslerp: function ( qb, t ) {\n\n\t\t\tif ( t === 0 ) return this;\n\t\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\t\tthis._w = - qb._w;\n\t\t\t\tthis._x = - qb._x;\n\t\t\t\tthis._y = - qb._y;\n\t\t\t\tthis._z = - qb._z;\n\n\t\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t\t} else {\n\n\t\t\t\tthis.copy( qb );\n\n\t\t\t}\n\n\t\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\t\tthis._w = w;\n\t\t\t\tthis._x = x;\n\t\t\t\tthis._y = y;\n\t\t\t\tthis._z = z;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( quaternion ) {\n\n\t\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis._x = array[ offset ];\n\t\t\tthis._y = array[ offset + 1 ];\n\t\t\tthis._z = array[ offset + 2 ];\n\t\t\tthis._w = array[ offset + 3 ];\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this._x;\n\t\t\tarray[ offset + 1 ] = this._y;\n\t\t\tarray[ offset + 2 ] = this._z;\n\t\t\tarray[ offset + 3 ] = this._w;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tonChange: function ( callback ) {\n\n\t\t\tthis.onChangeCallback = callback;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tonChangeCallback: function () {}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author kile / http://kile.stravaganza.org/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author egraether / http://egraether.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction Vector3( x, y, z ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\n\t}\n\n\tObject.assign( Vector3.prototype, {\n\n\t\tisVector3: true,\n\n\t\tset: function ( x, y, z ) {\n\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\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( z ) {\n\n\t\t\tthis.z = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tcase 2: this.z = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tcase 2: return this.z;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\t\t\tthis.z *= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x * b.x;\n\t\t\tthis.y = a.y * b.y;\n\t\t\tthis.z = a.z * b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyEuler: function () {\n\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function applyEuler( euler ) {\n\n\t\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t\t}\n\n\t\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyAxisAngle: function () {\n\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyMatrix3: function ( m ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( m ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ]  * z + e[ 12 ] ) * w;\n\t\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ]  * z + e[ 13 ] ) * w;\n\t\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyQuaternion: function ( q ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t\t// calculate quat * vector\n\n\t\t\tvar ix =  qw * x + qy * z - qz * y;\n\t\t\tvar iy =  qw * y + qz * x - qx * z;\n\t\t\tvar iz =  qw * z + qx * y - qy * x;\n\t\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t\t// calculate result * inverse quat\n\n\t\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tproject: function () {\n\n\t\t\tvar matrix = new Matrix4();\n\n\t\t\treturn function project( camera ) {\n\n\t\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tunproject: function () {\n\n\t\t\tvar matrix = new Matrix4();\n\n\t\t\treturn function unproject( camera ) {\n\n\t\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttransformDirection: function ( m ) {\n\n\t\t\t// input: THREE.Matrix4 affine matrix\n\t\t\t// vector interpreted as a direction\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ]  * z;\n\t\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ]  * z;\n\t\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\t\treturn this.normalize();\n\n\t\t},\n\n\t\tdivide: function ( v ) {\n\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\t\t\tthis.z /= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\t\t\tthis.z = Math.min( this.z, v.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\t\t\tthis.z = Math.max( this.z, v.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// assumes min < max, componentwise\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min = new Vector3();\n\t\t\tvar max = new Vector3();\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclampLength: function ( min, max ) {\n\n\t\t\tvar length = this.length();\n\n\t\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t\t},\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\t\t\tthis.z = Math.floor( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\t\t\tthis.z = Math.ceil( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\t\t\tthis.z = Math.round( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\t\t\tthis.z = - this.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t\t},\n\n\t\t// TODO lengthSquared?\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t\t},\n\n\t\tlengthManhattan: function () {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() || 1 );\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.normalize().multiplyScalar( length );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tcross: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\t\treturn this.crossVectors( v, w );\n\n\t\t\t}\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\t\tthis.x = y * v.z - z * v.y;\n\t\t\tthis.y = z * v.x - x * v.z;\n\t\t\tthis.z = x * v.y - y * v.x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcrossVectors: function ( a, b ) {\n\n\t\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\t\tthis.x = ay * bz - az * by;\n\t\t\tthis.y = az * bx - ax * bz;\n\t\t\tthis.z = ax * by - ay * bx;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tprojectOnVector: function ( vector ) {\n\n\t\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t\t},\n\n\t\tprojectOnPlane: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\t\treturn this.sub( v1 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\treflect: function () {\n\n\t\t\t// reflect incident vector off plane orthogonal to normal\n\t\t\t// normal is assumed to have unit length\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function reflect( normal ) {\n\n\t\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tangleTo: function ( v ) {\n\n\t\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t\t// clamp, to handle numerical problems\n\n\t\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t\t},\n\n\t\tdistanceTo: function ( v ) {\n\n\t\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t\t},\n\n\t\tdistanceToSquared: function ( v ) {\n\n\t\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t\t},\n\n\t\tdistanceToManhattan: function ( v ) {\n\n\t\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t\t},\n\n\t\tsetFromSpherical: function ( s ) {\n\n\t\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCylindrical: function ( c ) {\n\n\t\t\tthis.x = c.radius * Math.sin( c.theta );\n\t\t\tthis.y = c.y;\n\t\t\tthis.z = c.radius * Math.cos( c.theta );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrixPosition: function ( m ) {\n\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 12 ];\n\t\t\tthis.y = e[ 13 ];\n\t\t\tthis.z = e[ 14 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrixScale: function ( m ) {\n\n\t\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tthis.x = sx;\n\t\t\tthis.y = sy;\n\t\t\tthis.z = sz;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\t\t\tthis.z = array[ offset + 2 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\t\t\tarray[ offset + 2 ] = this.z;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t\t}\n\n\t\t\tthis.x = attribute.getX( index );\n\t\t\tthis.y = attribute.getY( index );\n\t\t\tthis.z = attribute.getZ( index );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author jordi_ros / http://plattsoft.com\n\t * @author D1plo1d / http://github.com/D1plo1d\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author timknip / http://www.floorplanner.com/\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction Matrix4() {\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\tObject.assign( Matrix4.prototype, {\n\n\t\tisMatrix4: true,\n\n\t\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tidentity: function () {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, 0,\n\t\t\t\t0, 1, 0, 0,\n\t\t\t\t0, 0, 1, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new Matrix4().fromArray( this.elements );\n\n\t\t},\n\n\t\tcopy: function ( m ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyPosition: function ( m ) {\n\n\t\t\tvar te = this.elements, me = m.elements;\n\n\t\t\tte[ 12 ] = me[ 12 ];\n\t\t\tte[ 13 ] = me[ 13 ];\n\t\t\tte[ 14 ] = me[ 14 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\t\tthis.set(\n\t\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t\t0,       0,       0,       1\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\textractRotation: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function extractRotation( m ) {\n\n\t\t\t\tvar te = this.elements;\n\t\t\t\tvar me = m.elements;\n\n\t\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmakeRotationFromEuler: function ( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = - c * f;\n\t\t\t\tte[ 8 ] = d;\n\n\t\t\t\tte[ 1 ] = af + be * d;\n\t\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\t\tte[ 9 ] = - b * c;\n\n\t\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\t\tte[ 6 ] = be + af * d;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\t\tte[ 0 ] = ce + df * b;\n\t\t\t\tte[ 4 ] = de * b - cf;\n\t\t\t\tte[ 8 ] = a * d;\n\n\t\t\t\tte[ 1 ] = a * f;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = - b;\n\n\t\t\t\tte[ 2 ] = cf * b - de;\n\t\t\t\tte[ 6 ] = df + ce * b;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\t\tte[ 0 ] = ce - df * b;\n\t\t\t\tte[ 4 ] = - a * f;\n\t\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\t\tte[ 1 ] = cf + de * b;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\t\tte[ 2 ] = - a * d;\n\t\t\t\tte[ 6 ] = b;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = be * d - af;\n\t\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\t\tte[ 1 ] = c * f;\n\t\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\t\tte[ 2 ] = - d;\n\t\t\t\tte[ 6 ] = b * c;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\t\tte[ 1 ] = f;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = - b * e;\n\n\t\t\t\tte[ 2 ] = - d * e;\n\t\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = - f;\n\t\t\t\tte[ 8 ] = d * e;\n\n\t\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\t\tte[ 6 ] = b * e;\n\t\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t\t}\n\n\t\t\t// last column\n\t\t\tte[ 3 ] = 0;\n\t\t\tte[ 7 ] = 0;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\t// bottom row\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar x = q._x, y = q._y, z = q._z, w = q._w;\n\t\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\t\tte[ 4 ] = xy - wz;\n\t\t\tte[ 8 ] = xz + wy;\n\n\t\t\tte[ 1 ] = xy + wz;\n\t\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\t\tte[ 9 ] = yz - wx;\n\n\t\t\tte[ 2 ] = xz - wy;\n\t\t\tte[ 6 ] = yz + wx;\n\t\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t\t// last column\n\t\t\tte[ 3 ] = 0;\n\t\t\tte[ 7 ] = 0;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\t// bottom row\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlookAt: function () {\n\n\t\t\tvar x = new Vector3();\n\t\t\tvar y = new Vector3();\n\t\t\tvar z = new Vector3();\n\n\t\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\t\tvar te = this.elements;\n\n\t\t\t\tz.subVectors( eye, target );\n\n\t\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t\t// eye and target are in the same position\n\n\t\t\t\t\tz.z = 1;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t\t// up and z are parallel\n\n\t\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tz.normalize();\n\t\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t\t}\n\n\t\t\t\tx.normalize();\n\t\t\t\ty.crossVectors( z, x );\n\n\t\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmultiply: function ( m, n ) {\n\n\t\t\tif ( n !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t\t}\n\n\t\t\treturn this.multiplyMatrices( this, m );\n\n\t\t},\n\n\t\tpremultiply: function ( m ) {\n\n\t\t\treturn this.multiplyMatrices( m, this );\n\n\t\t},\n\n\t\tmultiplyMatrices: function ( a, b ) {\n\n\t\t\tvar ae = a.elements;\n\t\t\tvar be = b.elements;\n\t\t\tvar te = this.elements;\n\n\t\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyToBufferAttribute: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t\t}\n\n\t\t\t\treturn attribute;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tdeterminant: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t\t//TODO: make this more efficient\n\t\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\t\treturn (\n\t\t\t\tn41 * (\n\t\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t\t - n13 * n24 * n32\n\t\t\t\t\t - n14 * n22 * n33\n\t\t\t\t\t + n12 * n24 * n33\n\t\t\t\t\t + n13 * n22 * n34\n\t\t\t\t\t - n12 * n23 * n34\n\t\t\t\t) +\n\t\t\t\tn42 * (\n\t\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t\t - n11 * n24 * n33\n\t\t\t\t\t + n14 * n21 * n33\n\t\t\t\t\t - n13 * n21 * n34\n\t\t\t\t\t + n13 * n24 * n31\n\t\t\t\t\t - n14 * n23 * n31\n\t\t\t\t) +\n\t\t\t\tn43 * (\n\t\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t\t - n11 * n22 * n34\n\t\t\t\t\t - n14 * n21 * n32\n\t\t\t\t\t + n12 * n21 * n34\n\t\t\t\t\t + n14 * n22 * n31\n\t\t\t\t\t - n12 * n24 * n31\n\t\t\t\t) +\n\t\t\t\tn44 * (\n\t\t\t\t\t- n13 * n22 * n31\n\t\t\t\t\t - n11 * n23 * n32\n\t\t\t\t\t + n11 * n22 * n33\n\t\t\t\t\t + n13 * n21 * n32\n\t\t\t\t\t - n12 * n21 * n33\n\t\t\t\t\t + n12 * n23 * n31\n\t\t\t\t)\n\n\t\t\t);\n\n\t\t},\n\n\t\ttranspose: function () {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar tmp;\n\n\t\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPosition: function ( v ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 12 ] = v.x;\n\t\t\tte[ 13 ] = v.y;\n\t\t\tte[ 14 ] = v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\t\tvar te = this.elements,\n\t\t\t\tme = m.elements,\n\n\t\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\t\tif ( det === 0 ) {\n\n\t\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\t\tthrow new Error( msg );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( msg );\n\n\t\t\t\t}\n\n\t\t\t\treturn this.identity();\n\n\t\t\t}\n\n\t\t\tvar detInv = 1 / det;\n\n\t\t\tte[ 0 ] = t11 * detInv;\n\t\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\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\t\tte[ 4 ] = t12 * detInv;\n\t\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\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\t\tte[ 8 ] = t13 * detInv;\n\t\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\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\t\tte[ 12 ] = t14 * detInv;\n\t\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\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\t\treturn this;\n\n\t\t},\n\n\t\tscale: function ( v ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetMaxScaleOnAxis: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t\t},\n\n\t\tmakeTranslation: function ( x, y, z ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationX: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0,  0, 0,\n\t\t\t\t0, c, - s, 0,\n\t\t\t\t0, s,  c, 0,\n\t\t\t\t0, 0,  0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationY: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\t c, 0, s, 0,\n\t\t\t\t 0, 1, 0, 0,\n\t\t\t\t- s, 0, c, 0,\n\t\t\t\t 0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationZ: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\tc, - s, 0, 0,\n\t\t\t\ts,  c, 0, 0,\n\t\t\t\t0,  0, 1, 0,\n\t\t\t\t0,  0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\t\tvar c = Math.cos( angle );\n\t\t\tvar s = Math.sin( angle );\n\t\t\tvar t = 1 - c;\n\t\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\t\tvar tx = t * x, ty = t * y;\n\n\t\t\tthis.set(\n\n\t\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\t return this;\n\n\t\t},\n\n\t\tmakeScale: function ( x, y, z ) {\n\n\t\t\tthis.set(\n\n\t\t\t\tx, 0, 0, 0,\n\t\t\t\t0, y, 0, 0,\n\t\t\t\t0, 0, z, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeShear: function ( x, y, z ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, y, z, 0,\n\t\t\t\tx, 1, z, 0,\n\t\t\t\tx, y, 1, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcompose: function ( position, quaternion, scale ) {\n\n\t\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\t\tthis.scale( scale );\n\t\t\tthis.setPosition( position );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdecompose: function () {\n\n\t\t\tvar vector = new Vector3();\n\t\t\tvar matrix = new Matrix4();\n\n\t\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\t\tvar te = this.elements;\n\n\t\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t\t// if determine is negative, we need to invert one scale\n\t\t\t\tvar det = this.determinant();\n\t\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\t\tposition.x = te[ 12 ];\n\t\t\t\tposition.y = te[ 13 ];\n\t\t\t\tposition.z = te[ 14 ];\n\n\t\t\t\t// scale the rotation part\n\t\t\t\tmatrix.copy( this );\n\n\t\t\t\tvar invSX = 1 / sx;\n\t\t\t\tvar invSY = 1 / sy;\n\t\t\t\tvar invSZ = 1 / sz;\n\n\t\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\t\tscale.x = sx;\n\t\t\t\tscale.y = sy;\n\t\t\t\tscale.z = sz;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\t\tif ( far === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\t\t\tvar x = 2 * near / ( right - left );\n\t\t\tvar y = 2 * near / ( top - bottom );\n\n\t\t\tvar a = ( right + left ) / ( right - left );\n\t\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\t\tvar c = - ( far + near ) / ( far - near );\n\t\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar w = 1.0 / ( right - left );\n\t\t\tvar h = 1.0 / ( top - bottom );\n\t\t\tvar p = 1.0 / ( far - near );\n\n\t\t\tvar x = ( right + left ) * w;\n\t\t\tvar y = ( top + bottom ) * h;\n\t\t\tvar z = ( far + near ) * p;\n\n\t\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( matrix ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = matrix.elements;\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar te = this.elements;\n\n\t\t\tarray[ offset ] = te[ 0 ];\n\t\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\t\treturn array;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tTexture.call( this, 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 !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n\tDataTexture.prototype = Object.create( Texture.prototype );\n\tDataTexture.prototype.constructor = DataTexture;\n\n\tDataTexture.prototype.isDataTexture = true;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction CubeTexture( 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\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tCubeTexture.prototype = Object.create( Texture.prototype );\n\tCubeTexture.prototype.constructor = CubeTexture;\n\n\tCubeTexture.prototype.isCubeTexture = true;\n\n\tObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\t\tget: function () {\n\n\t\t\treturn this.image;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.image = value;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author tschw\n\t *\n\t * Uniforms of a program.\n\t * Those form a tree structure with a special top-level container for the root,\n\t * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n\t *\n\t *\n\t * Properties of inner nodes including the top-level container:\n\t *\n\t * .seq - array of nested uniforms\n\t * .map - nested uniforms by name\n\t *\n\t *\n\t * Methods of all nodes except the top-level container:\n\t *\n\t * .setValue( gl, value, [renderer] )\n\t *\n\t * \t\tuploads a uniform value(s)\n\t *  \tthe 'renderer' parameter is needed for sampler uniforms\n\t *\n\t *\n\t * Static methods of the top-level container (renderer factorizations):\n\t *\n\t * .upload( gl, seq, values, renderer )\n\t *\n\t * \t\tsets uniforms in 'seq' to 'values[id].value'\n\t *\n\t * .seqWithValue( seq, values ) : filteredSeq\n\t *\n\t * \t\tfilters 'seq' entries with corresponding entry in values\n\t *\n\t *\n\t * Methods of the top-level container (renderer factorizations):\n\t *\n\t * .setValue( gl, name, value )\n\t *\n\t * \t\tsets uniform with  name 'name' to 'value'\n\t *\n\t * .set( gl, obj, prop )\n\t *\n\t * \t\tsets uniform from object and property with same name than uniform\n\t *\n\t * .setOptional( gl, obj, prop )\n\t *\n\t * \t\tlike .set for an optional property of the object\n\t *\n\t */\n\n\tvar emptyTexture = new Texture();\n\tvar emptyCubeTexture = new CubeTexture();\n\n\t// --- Base for inner nodes (including the root) ---\n\n\tfunction UniformContainer() {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\t// --- Utilities ---\n\n\t// Array Caches (provide typed arrays for temporary by size)\n\n\tvar arrayCacheF32 = [];\n\tvar arrayCacheI32 = [];\n\n\t// Float32Array caches used for uploading Matrix uniforms\n\n\tvar mat4array = new Float32Array( 16 );\n\tvar mat3array = new Float32Array( 9 );\n\n\t// Flattening for arrays of vectors and matrices\n\n\tfunction flatten( array, nBlocks, blockSize ) {\n\n\t\tvar firstElem = array[ 0 ];\n\n\t\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t\t// unoptimized: ! isNaN( firstElem )\n\t\t// see http://jacksondunstan.com/articles/983\n\n\t\tvar n = nBlocks * blockSize,\n\t\t\tr = arrayCacheF32[ n ];\n\n\t\tif ( r === undefined ) {\n\n\t\t\tr = new Float32Array( n );\n\t\t\tarrayCacheF32[ n ] = r;\n\n\t\t}\n\n\t\tif ( nBlocks !== 0 ) {\n\n\t\t\tfirstElem.toArray( r, 0 );\n\n\t\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\t\toffset += blockSize;\n\t\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n\t// Texture unit allocation\n\n\tfunction allocTexUnits( renderer, n ) {\n\n\t\tvar r = arrayCacheI32[ n ];\n\n\t\tif ( r === undefined ) {\n\n\t\t\tr = new Int32Array( n );\n\t\t\tarrayCacheI32[ n ] = r;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\tr[ i ] = renderer.allocTextureUnit();\n\n\t\treturn r;\n\n\t}\n\n\t// --- Setters ---\n\n\t// Note: Defining these methods externally, because they come in a bunch\n\t// and this way their names minify.\n\n\t// Single scalar\n\n\tfunction setValue1f( gl, v ) { gl.uniform1f( this.addr, v ); }\n\tfunction setValue1i( gl, v ) { gl.uniform1i( this.addr, v ); }\n\n\t// Single float vector (from flat array or THREE.VectorN)\n\n\tfunction setValue2fv( gl, v ) {\n\n\t\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\t\telse gl.uniform2f( this.addr, v.x, v.y );\n\n\t}\n\n\tfunction setValue3fv( gl, v ) {\n\n\t\tif ( v.x !== undefined )\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\t\telse if ( v.r !== undefined )\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\t\telse\n\t\t\tgl.uniform3fv( this.addr, v );\n\n\t}\n\n\tfunction setValue4fv( gl, v ) {\n\n\t\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\t\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t}\n\n\t// Single matrix (from flat array or MatrixN)\n\n\tfunction setValue2fm( gl, v ) {\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n\t}\n\n\tfunction setValue3fm( gl, v ) {\n\n\t\tif ( v.elements === undefined ) {\n\n\t\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\t} else {\n\n\t\t\tmat3array.set( v.elements );\n\t\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\t}\n\n\t}\n\n\tfunction setValue4fm( gl, v ) {\n\n\t\tif ( v.elements === undefined ) {\n\n\t\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\t} else {\n\n\t\t\tmat4array.set( v.elements );\n\t\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\t}\n\n\t}\n\n\t// Single texture (2D / Cube)\n\n\tfunction setValueT1( gl, v, renderer ) {\n\n\t\tvar unit = renderer.allocTextureUnit();\n\t\tgl.uniform1i( this.addr, unit );\n\t\trenderer.setTexture2D( v || emptyTexture, unit );\n\n\t}\n\n\tfunction setValueT6( gl, v, renderer ) {\n\n\t\tvar unit = renderer.allocTextureUnit();\n\t\tgl.uniform1i( this.addr, unit );\n\t\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n\t}\n\n\t// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\n\tfunction setValue2iv( gl, v ) { gl.uniform2iv( this.addr, v ); }\n\tfunction setValue3iv( gl, v ) { gl.uniform3iv( this.addr, v ); }\n\tfunction setValue4iv( gl, v ) { gl.uniform4iv( this.addr, v ); }\n\n\t// Helper to pick the right setter for the singular case\n\n\tfunction getSingularSetter( type ) {\n\n\t\tswitch ( type ) {\n\n\t\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t\t}\n\n\t}\n\n\t// Array of scalars\n\n\tfunction setValue1fv( gl, v ) { gl.uniform1fv( this.addr, v ); }\n\tfunction setValue1iv( gl, v ) { gl.uniform1iv( this.addr, v ); }\n\n\t// Array of vectors (flat or from THREE classes)\n\n\tfunction setValueV2a( gl, v ) {\n\n\t\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n\t}\n\n\tfunction setValueV3a( gl, v ) {\n\n\t\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n\t}\n\n\tfunction setValueV4a( gl, v ) {\n\n\t\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n\t}\n\n\t// Array of matrices (flat or from THREE clases)\n\n\tfunction setValueM2a( gl, v ) {\n\n\t\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n\t}\n\n\tfunction setValueM3a( gl, v ) {\n\n\t\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n\t}\n\n\tfunction setValueM4a( gl, v ) {\n\n\t\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n\t}\n\n\t// Array of textures (2D / Cube)\n\n\tfunction setValueT1a( gl, v, renderer ) {\n\n\t\tvar n = v.length,\n\t\t\tunits = allocTexUnits( renderer, n );\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t\t}\n\n\t}\n\n\tfunction setValueT6a( gl, v, renderer ) {\n\n\t\tvar n = v.length,\n\t\t\tunits = allocTexUnits( renderer, n );\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t\t}\n\n\t}\n\n\t// Helper to pick the right setter for a pure (bottom-level) array\n\n\tfunction getPureArraySetter( type ) {\n\n\t\tswitch ( type ) {\n\n\t\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t\t}\n\n\t}\n\n\t// --- Uniform Classes ---\n\n\tfunction SingleUniform( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n\tfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n\tfunction StructuredUniform( id ) {\n\n\t\tthis.id = id;\n\n\t\tUniformContainer.call( this ); // mix-in\n\n\t}\n\n\tStructuredUniform.prototype.setValue = function ( gl, value ) {\n\n\t\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t\t// are not allowed in structured uniforms.\n\n\t\tvar seq = this.seq;\n\n\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tvar u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ] );\n\n\t\t}\n\n\t};\n\n\t// --- Top-level ---\n\n\t// Parser - builds up the property tree from the path strings\n\n\tvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n\t// extracts\n\t// \t- the identifier (member name or array index)\n\t//  - followed by an optional right bracket (found when array index)\n\t//  - followed by an optional left bracket or dot (type of subscript)\n\t//\n\t// Note: These portions can be read in a non-overlapping fashion and\n\t// allow straightforward parsing of the hierarchy that WebGL encodes\n\t// in the uniform names.\n\n\tfunction addUniform( container, uniformObject ) {\n\n\t\tcontainer.seq.push( uniformObject );\n\t\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n\t}\n\n\tfunction parseUniform( activeInfo, addr, container ) {\n\n\t\tvar path = activeInfo.name,\n\t\t\tpathLength = path.length;\n\n\t\t// reset RegExp object, because of the early exit of a previous run\n\t\tRePathPart.lastIndex = 0;\n\n\t\tfor ( ; ; ) {\n\n\t\t\tvar match = RePathPart.exec( path ),\n\t\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\t\tid = match[ 1 ],\n\t\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\t\tsubscript = match[ 3 ];\n\n\t\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\t\tbreak;\n\n\t\t\t} else {\n\n\t\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\t\tif ( next === undefined ) {\n\n\t\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\t\taddUniform( container, next );\n\n\t\t\t\t}\n\n\t\t\t\tcontainer = next;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Root Container\n\n\tfunction WebGLUniforms( gl, program, renderer ) {\n\n\t\tUniformContainer.call( this );\n\n\t\tthis.renderer = renderer;\n\n\t\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\t\tpath = info.name,\n\t\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tWebGLUniforms.prototype.setValue = function ( gl, name, value ) {\n\n\t\tvar u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n\t};\n\n\tWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\t\tvar v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t};\n\n\n\t// Static interface\n\n\tWebGLUniforms.upload = function ( gl, seq, values, renderer ) {\n\n\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tvar u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\t\tvar r = [];\n\n\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tvar u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\tfunction Color( 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\tObject.assign( Color.prototype, {\n\n\t\tisColor: true,\n\n\t\tr: 1, g: 1, b: 1,\n\n\t\tset: function ( value ) {\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.r = scalar;\n\t\t\tthis.g = scalar;\n\t\t\tthis.b = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetHex: function ( hex ) {\n\n\t\t\thex = Math.floor( hex );\n\n\t\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetRGB: function ( r, g, b ) {\n\n\t\t\tthis.r = r;\n\t\t\tthis.g = g;\n\t\t\tthis.b = b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetHSL: function () {\n\n\t\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\t\tif ( t < 0 ) t += 1;\n\t\t\t\tif ( t > 1 ) t -= 1;\n\t\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\t\tif ( s === 0 ) {\n\n\t\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetStyle: function ( style ) {\n\n\t\t\tfunction handleAlpha( string ) {\n\n\t\t\t\tif ( string === undefined ) return;\n\n\t\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tvar m;\n\n\t\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t\t// rgb / hsl\n\n\t\t\t\tvar color;\n\t\t\t\tvar name = m[ 1 ];\n\t\t\t\tvar components = m[ 2 ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'rgb':\n\t\t\t\t\tcase 'rgba':\n\n\t\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'hsl':\n\t\t\t\t\tcase 'hsla':\n\n\t\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t\t// hex color\n\n\t\t\t\tvar hex = m[ 1 ];\n\t\t\t\tvar size = hex.length;\n\n\t\t\t\tif ( size === 3 ) {\n\n\t\t\t\t\t// #ff0\n\t\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t\t// #ff0000\n\t\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( style && style.length > 0 ) {\n\n\t\t\t\t// color keywords\n\t\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t\t// red\n\t\t\t\t\tthis.setHex( hex );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// unknown color\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t\t},\n\n\t\tcopy: function ( color ) {\n\n\t\t\tthis.r = color.r;\n\t\t\tthis.g = color.g;\n\t\t\tthis.b = color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconvertGammaToLinear: function () {\n\n\t\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\t\tthis.r = r * r;\n\t\t\tthis.g = g * g;\n\t\t\tthis.b = b * b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconvertLinearToGamma: function () {\n\n\t\t\tthis.r = Math.sqrt( this.r );\n\t\t\tthis.g = Math.sqrt( this.g );\n\t\t\tthis.b = Math.sqrt( this.b );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetHex: function () {\n\n\t\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t\t},\n\n\t\tgetHexString: function () {\n\n\t\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t\t},\n\n\t\tgetHSL: function ( optionalTarget ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\t\tvar max = Math.max( r, g, b );\n\t\t\tvar min = Math.min( r, g, b );\n\n\t\t\tvar hue, saturation;\n\t\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\t\tif ( min === max ) {\n\n\t\t\t\thue = 0;\n\t\t\t\tsaturation = 0;\n\n\t\t\t} else {\n\n\t\t\t\tvar delta = max - min;\n\n\t\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\t\tswitch ( max ) {\n\n\t\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t\t}\n\n\t\t\t\thue /= 6;\n\n\t\t\t}\n\n\t\t\thsl.h = hue;\n\t\t\thsl.s = saturation;\n\t\t\thsl.l = lightness;\n\n\t\t\treturn hsl;\n\n\t\t},\n\n\t\tgetStyle: function () {\n\n\t\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t\t},\n\n\t\toffsetHSL: function ( h, s, l ) {\n\n\t\t\tvar hsl = this.getHSL();\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( color ) {\n\n\t\t\tthis.r += color.r;\n\t\t\tthis.g += color.g;\n\t\t\tthis.b += color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddColors: function ( color1, color2 ) {\n\n\t\t\tthis.r = color1.r + color2.r;\n\t\t\tthis.g = color1.g + color2.g;\n\t\t\tthis.b = color1.b + color2.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.r += s;\n\t\t\tthis.g += s;\n\t\t\tthis.b += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function( color ) {\n\n\t\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( color ) {\n\n\t\t\tthis.r *= color.r;\n\t\t\tthis.g *= color.g;\n\t\t\tthis.b *= color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tthis.r *= s;\n\t\t\tthis.g *= s;\n\t\t\tthis.b *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerp: function ( color, alpha ) {\n\n\t\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( c ) {\n\n\t\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.r = array[ offset ];\n\t\t\tthis.g = array[ offset + 1 ];\n\t\t\tthis.b = array[ offset + 2 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.r;\n\t\t\tarray[ offset + 1 ] = this.g;\n\t\t\tarray[ offset + 2 ] = this.b;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\treturn this.getHex();\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * Uniforms library for shared webgl shaders\n\t */\n\n\tvar UniformsLib = {\n\n\t\tcommon: {\n\n\t\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\t\topacity: { value: 1.0 },\n\n\t\t\tmap: { value: null },\n\t\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },\n\n\t\t\talphaMap: { value: null },\n\n\t\t},\n\n\t\tspecularmap: {\n\n\t\t\tspecularMap: { value: null },\n\n\t\t},\n\n\t\tenvmap: {\n\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\treflectivity: { value: 1.0 },\n\t\t\trefractionRatio: { value: 0.98 }\n\n\t\t},\n\n\t\taomap: {\n\n\t\t\taoMap: { value: null },\n\t\t\taoMapIntensity: { value: 1 }\n\n\t\t},\n\n\t\tlightmap: {\n\n\t\t\tlightMap: { value: null },\n\t\t\tlightMapIntensity: { value: 1 }\n\n\t\t},\n\n\t\temissivemap: {\n\n\t\t\temissiveMap: { value: null }\n\n\t\t},\n\n\t\tbumpmap: {\n\n\t\t\tbumpMap: { value: null },\n\t\t\tbumpScale: { value: 1 }\n\n\t\t},\n\n\t\tnormalmap: {\n\n\t\t\tnormalMap: { value: null },\n\t\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t\t},\n\n\t\tdisplacementmap: {\n\n\t\t\tdisplacementMap: { value: null },\n\t\t\tdisplacementScale: { value: 1 },\n\t\t\tdisplacementBias: { value: 0 }\n\n\t\t},\n\n\t\troughnessmap: {\n\n\t\t\troughnessMap: { value: null }\n\n\t\t},\n\n\t\tmetalnessmap: {\n\n\t\t\tmetalnessMap: { value: null }\n\n\t\t},\n\n\t\tgradientmap: {\n\n\t\t\tgradientMap: { value: null }\n\n\t\t},\n\n\t\tfog: {\n\n\t\t\tfogDensity: { value: 0.00025 },\n\t\t\tfogNear: { value: 1 },\n\t\t\tfogFar: { value: 2000 },\n\t\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t\t},\n\n\t\tlights: {\n\n\t\t\tambientLightColor: { value: [] },\n\n\t\t\tdirectionalLights: { value: [], properties: {\n\t\t\t\tdirection: {},\n\t\t\t\tcolor: {},\n\n\t\t\t\tshadow: {},\n\t\t\t\tshadowBias: {},\n\t\t\t\tshadowRadius: {},\n\t\t\t\tshadowMapSize: {}\n\t\t\t} },\n\n\t\t\tdirectionalShadowMap: { value: [] },\n\t\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\t\tspotLights: { value: [], properties: {\n\t\t\t\tcolor: {},\n\t\t\t\tposition: {},\n\t\t\t\tdirection: {},\n\t\t\t\tdistance: {},\n\t\t\t\tconeCos: {},\n\t\t\t\tpenumbraCos: {},\n\t\t\t\tdecay: {},\n\n\t\t\t\tshadow: {},\n\t\t\t\tshadowBias: {},\n\t\t\t\tshadowRadius: {},\n\t\t\t\tshadowMapSize: {}\n\t\t\t} },\n\n\t\t\tspotShadowMap: { value: [] },\n\t\t\tspotShadowMatrix: { value: [] },\n\n\t\t\tpointLights: { value: [], properties: {\n\t\t\t\tcolor: {},\n\t\t\t\tposition: {},\n\t\t\t\tdecay: {},\n\t\t\t\tdistance: {},\n\n\t\t\t\tshadow: {},\n\t\t\t\tshadowBias: {},\n\t\t\t\tshadowRadius: {},\n\t\t\t\tshadowMapSize: {},\n\t\t\t\tshadowCameraNear: {},\n\t\t\t\tshadowCameraFar: {}\n\t\t\t} },\n\n\t\t\tpointShadowMap: { value: [] },\n\t\t\tpointShadowMatrix: { value: [] },\n\n\t\t\themisphereLights: { value: [], properties: {\n\t\t\t\tdirection: {},\n\t\t\t\tskyColor: {},\n\t\t\t\tgroundColor: {}\n\t\t\t} },\n\n\t\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\t\trectAreaLights: { value: [], properties: {\n\t\t\t\tcolor: {},\n\t\t\t\tposition: {},\n\t\t\t\twidth: {},\n\t\t\t\theight: {}\n\t\t\t} }\n\n\t\t},\n\n\t\tpoints: {\n\n\t\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\t\topacity: { value: 1.0 },\n\t\t\tsize: { value: 1.0 },\n\t\t\tscale: { value: 1.0 },\n\t\t\tmap: { value: null },\n\t\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) }\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Uniform Utilities\n\t */\n\n\tvar UniformsUtils = {\n\n\t\tmerge: function ( uniforms ) {\n\n\t\t\tvar merged = {};\n\n\t\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn merged;\n\n\t\t},\n\n\t\tclone: function ( uniforms_src ) {\n\n\t\t\tvar uniforms_dst = {};\n\n\t\t\tfor ( var u in uniforms_src ) {\n\n\t\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uniforms_dst;\n\n\t\t}\n\n\t};\n\n\tvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\\n\";\n\n\tvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\\n\";\n\n\tvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\\n\";\n\n\tvar 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( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\\n\";\n\n\tvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\n\tvar begin_vertex = \"\\nvec3 transformed = vec3( position );\\n\";\n\n\tvar beginnormal_vertex = \"\\nvec3 objectNormal = vec3( normal );\\n\";\n\n\tvar bsdfs = \"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\tif( decayExponent > 0.0 ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\treturn distanceFalloff * maxDistanceCutoffFactor;\\n#else\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n#endif\\n\\t}\\n\\treturn 1.0;\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE  = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS  = 0.5 / LUT_SIZE;\\n\\tfloat theta = acos( dot( N, V ) );\\n\\tvec2 uv = vec2(\\n\\t\\tsqrt( saturate( roughness ) ),\\n\\t\\tsaturate( theta / ( 0.5 * PI ) ) );\\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.86267 + (0.49788 + 0.01436 * y ) * y;\\n\\tfloat b = 3.45068 + (4.18814 + y) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = (x > 0.0) ? v : 0.5 * inversesqrt( 1.0 - x * x ) - 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 * transpose( 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\\tvec3 result = vec3( LTC_ClippedSphereFormFactor( vectorFormFactor ) );\\n\\treturn result;\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.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 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\\n\\treturn specularColor * AB.x + AB.y;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n\";\n\n\tvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\\n\";\n\n\tvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; ++ i ) {\\n\\t\\tvec4 plane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t\\t\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; ++ i ) {\\n\\t\\t\\tvec4 plane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t\\n\\t#endif\\n#endif\\n\";\n\n\tvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\\n\";\n\n\tvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n\";\n\n\tvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n\";\n\n\tvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\n\tvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\\n\";\n\n\tvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\n\tvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\n\tvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\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};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transpose( const in mat3 v ) {\\n\\tmat3 tmp;\\n\\ttmp[0] = vec3(v[0].x, v[1].x, v[2].x);\\n\\ttmp[1] = vec3(v[0].y, v[1].y, v[2].y);\\n\\ttmp[2] = vec3(v[0].z, v[1].z, v[2].z);\\n\\treturn tmp;\\n}\\n\";\n\n\tvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1  (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale =  bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\\n\";\n\n\tvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n\";\n\n\tvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\\n\";\n\n\tvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\\n\";\n\n\tvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\\n\";\n\n\tvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\\n\";\n\n\tvar encodings_fragment = \"  gl_FragColor = linearToOutputTexel( gl_FragColor );\\n\";\n\n\tvar 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.xyz, vec3( gammaFactor ) ), value.w );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\\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.w );\\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.w );\\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.xyz * value.w * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.x, 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.x, max( value.g, value.b ) );\\n\\tfloat D      = max( maxRange / maxRGB, 1.0 );\\n\\tD            = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value )  {\\n\\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\\n\\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract(Le);\\n\\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\\n\\treturn vec4( max(vRGB, 0.0), 1.0 );\\n}\\n\";\n\n\tvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\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\";\n\n\tvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\\n\";\n\n\tvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\\n\";\n\n\tvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\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\";\n\n\tvar fog_vertex = \"\\n#ifdef USE_FOG\\nfogDepth = -mvPosition.z;\\n#endif\";\n\n\tvar fog_pars_vertex = \"#ifdef USE_FOG\\n  varying float fogDepth;\\n#endif\\n\";\n\n\tvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\\n\";\n\n\tvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\\n\";\n\n\tvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\n\tvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\\n\";\n\n\tvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\n\tvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\n\tvar lights_pars = \"uniform vec3 ambientLightColor;\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltcMat;\\tuniform sampler2D ltcMag;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\\n\";\n\n\tvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\\n\";\n\n\tvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\\n\";\n\n\tvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\\n\";\n\n\tvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tfloat norm = texture2D( ltcMag, uv ).a;\\n\\t\\tvec4 t = texture2D( ltcMat, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3(   1,   0, t.y ),\\n\\t\\t\\tvec3(   0, t.z,   0 ),\\n\\t\\t\\tvec3( t.w,   0, t.x )\\n\\t\\t);\\n\\t\\treflectedLight.directSpecular += lightColor * material.specularColor * norm * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\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\\n#define Material_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\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\";\n\n\tvar lights_template = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\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#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * 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 ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\\n\\t#endif\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\\n\\t#ifndef STANDARD\\n\\t\\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\\n\\t#else\\n\\t\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n\\t#endif\\n\\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\\n\";\n\n\tvar logdepthbuf_fragment = \"#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\\n\\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\\n#endif\";\n\n\tvar logdepthbuf_pars_fragment = \"#ifdef USE_LOGDEPTHBUF\\n\\tuniform float logDepthBufFC;\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n#endif\\n\";\n\n\tvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n\\tuniform float logDepthBufFC;\\n#endif\";\n\n\tvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\\n\\t#endif\\n#endif\\n\";\n\n\tvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\\n\";\n\n\tvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\n\tvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n\";\n\n\tvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform vec4 offsetRepeat;\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\n\tvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\\n\";\n\n\tvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\n\tvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\\n\";\n\n\tvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\n\tvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\\n\";\n\n\tvar normal_fragment = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\\n\";\n\n\tvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\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 S = normalize( q0 * st1.t - q1 * st0.t );\\n\\t\\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\tmapN.xy = normalScale * mapN.xy;\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\\n\";\n\n\tvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 1.0 - 2.0 * rgb.xyz;\\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}\\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\";\n\n\tvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\\n\";\n\n\tvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\\n\";\n\n\tvar dithering_fragment = \"#if defined( DITHERING )\\n  gl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\\n\";\n\n\tvar dithering_pars_fragment = \"#if defined( 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\";\n\n\tvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\\n\";\n\n\tvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\n\tvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\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\\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( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, 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( 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 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\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\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\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 )\\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\";\n\n\tvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\\n\";\n\n\tvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\\n\";\n\n\tvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\\n\";\n\n\tvar 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\n\tvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform 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\";\n\n\tvar 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\";\n\n\tvar 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#endif\\n\";\n\n\tvar 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\n\tvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\n\tvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\\n\";\n\n\tvar tonemapping_pars_fragment = \"#define saturate(a) clamp( a, 0.0, 1.0 )\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\n\";\n\n\tvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\n\n\tvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform vec4 offsetRepeat;\\n#endif\\n\";\n\n\tvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\\n#endif\";\n\n\tvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\n\tvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\n\tvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\n\tvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\\n\";\n\n\tvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldPosition;\\nvoid main() {\\n\\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\\n\\tgl_FragColor.a *= opacity;\\n}\\n\";\n\n\tvar cube_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\\n\";\n\n\tvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\\n\";\n\n\tvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\tvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\\n\";\n\n\tvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\\n\";\n\n\tvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldPosition );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n}\\n\";\n\n\tvar equirect_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\\n\";\n\n\tvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\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 <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\n\tvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\n\tvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\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 <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\n\tvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\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 <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_template>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\n\tvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <lights_pars>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\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 <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_template>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\n\tvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\nvoid main() {\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\\n\";\n\n\tvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\\n\";\n\n\tvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\n\tvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tgl_PointSize = size * ( scale / - mvPosition.z );\\n\\t#else\\n\\t\\tgl_PointSize = size;\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\n\tvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n}\\n\";\n\n\tvar shadow_vert = \"#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n}\\n\";\n\n\tvar ShaderChunk = {\n\t\talphamap_fragment: alphamap_fragment,\n\t\talphamap_pars_fragment: alphamap_pars_fragment,\n\t\talphatest_fragment: alphatest_fragment,\n\t\taomap_fragment: aomap_fragment,\n\t\taomap_pars_fragment: aomap_pars_fragment,\n\t\tbegin_vertex: begin_vertex,\n\t\tbeginnormal_vertex: beginnormal_vertex,\n\t\tbsdfs: bsdfs,\n\t\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\t\tclipping_planes_fragment: clipping_planes_fragment,\n\t\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\t\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\t\tclipping_planes_vertex: clipping_planes_vertex,\n\t\tcolor_fragment: color_fragment,\n\t\tcolor_pars_fragment: color_pars_fragment,\n\t\tcolor_pars_vertex: color_pars_vertex,\n\t\tcolor_vertex: color_vertex,\n\t\tcommon: common,\n\t\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\t\tdefaultnormal_vertex: defaultnormal_vertex,\n\t\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\t\tdisplacementmap_vertex: displacementmap_vertex,\n\t\temissivemap_fragment: emissivemap_fragment,\n\t\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\t\tencodings_fragment: encodings_fragment,\n\t\tencodings_pars_fragment: encodings_pars_fragment,\n\t\tenvmap_fragment: envmap_fragment,\n\t\tenvmap_pars_fragment: envmap_pars_fragment,\n\t\tenvmap_pars_vertex: envmap_pars_vertex,\n\t\tenvmap_vertex: envmap_vertex,\n\t\tfog_vertex: fog_vertex,\n\t\tfog_pars_vertex: fog_pars_vertex,\n\t\tfog_fragment: fog_fragment,\n\t\tfog_pars_fragment: fog_pars_fragment,\n\t\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\t\tlightmap_fragment: lightmap_fragment,\n\t\tlightmap_pars_fragment: lightmap_pars_fragment,\n\t\tlights_lambert_vertex: lights_lambert_vertex,\n\t\tlights_pars: lights_pars,\n\t\tlights_phong_fragment: lights_phong_fragment,\n\t\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\t\tlights_physical_fragment: lights_physical_fragment,\n\t\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\t\tlights_template: lights_template,\n\t\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\t\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\t\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\t\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\t\tmap_fragment: map_fragment,\n\t\tmap_pars_fragment: map_pars_fragment,\n\t\tmap_particle_fragment: map_particle_fragment,\n\t\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\t\tmetalnessmap_fragment: metalnessmap_fragment,\n\t\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\t\tmorphnormal_vertex: morphnormal_vertex,\n\t\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\t\tmorphtarget_vertex: morphtarget_vertex,\n\t\tnormal_fragment: normal_fragment,\n\t\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\t\tpacking: packing,\n\t\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\t\tproject_vertex: project_vertex,\n\t\tdithering_fragment: dithering_fragment,\n\t\tdithering_pars_fragment: dithering_pars_fragment,\n\t\troughnessmap_fragment: roughnessmap_fragment,\n\t\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\t\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\t\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\t\tshadowmap_vertex: shadowmap_vertex,\n\t\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\t\tskinbase_vertex: skinbase_vertex,\n\t\tskinning_pars_vertex: skinning_pars_vertex,\n\t\tskinning_vertex: skinning_vertex,\n\t\tskinnormal_vertex: skinnormal_vertex,\n\t\tspecularmap_fragment: specularmap_fragment,\n\t\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\t\ttonemapping_fragment: tonemapping_fragment,\n\t\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\t\tuv_pars_fragment: uv_pars_fragment,\n\t\tuv_pars_vertex: uv_pars_vertex,\n\t\tuv_vertex: uv_vertex,\n\t\tuv2_pars_fragment: uv2_pars_fragment,\n\t\tuv2_pars_vertex: uv2_pars_vertex,\n\t\tuv2_vertex: uv2_vertex,\n\t\tworldpos_vertex: worldpos_vertex,\n\n\t\tcube_frag: cube_frag,\n\t\tcube_vert: cube_vert,\n\t\tdepth_frag: depth_frag,\n\t\tdepth_vert: depth_vert,\n\t\tdistanceRGBA_frag: distanceRGBA_frag,\n\t\tdistanceRGBA_vert: distanceRGBA_vert,\n\t\tequirect_frag: equirect_frag,\n\t\tequirect_vert: equirect_vert,\n\t\tlinedashed_frag: linedashed_frag,\n\t\tlinedashed_vert: linedashed_vert,\n\t\tmeshbasic_frag: meshbasic_frag,\n\t\tmeshbasic_vert: meshbasic_vert,\n\t\tmeshlambert_frag: meshlambert_frag,\n\t\tmeshlambert_vert: meshlambert_vert,\n\t\tmeshphong_frag: meshphong_frag,\n\t\tmeshphong_vert: meshphong_vert,\n\t\tmeshphysical_frag: meshphysical_frag,\n\t\tmeshphysical_vert: meshphysical_vert,\n\t\tnormal_frag: normal_frag,\n\t\tnormal_vert: normal_vert,\n\t\tpoints_frag: points_frag,\n\t\tpoints_vert: points_vert,\n\t\tshadow_frag: shadow_frag,\n\t\tshadow_vert: shadow_vert\n\t};\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t */\n\n\tvar ShaderLib = {\n\n\t\tbasic: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.specularmap,\n\t\t\t\tUniformsLib.envmap,\n\t\t\t\tUniformsLib.aomap,\n\t\t\t\tUniformsLib.lightmap,\n\t\t\t\tUniformsLib.fog\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t\t},\n\n\t\tlambert: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.specularmap,\n\t\t\t\tUniformsLib.envmap,\n\t\t\t\tUniformsLib.aomap,\n\t\t\t\tUniformsLib.lightmap,\n\t\t\t\tUniformsLib.emissivemap,\n\t\t\t\tUniformsLib.fog,\n\t\t\t\tUniformsLib.lights,\n\t\t\t\t{\n\t\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t\t},\n\n\t\tphong: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.specularmap,\n\t\t\t\tUniformsLib.envmap,\n\t\t\t\tUniformsLib.aomap,\n\t\t\t\tUniformsLib.lightmap,\n\t\t\t\tUniformsLib.emissivemap,\n\t\t\t\tUniformsLib.bumpmap,\n\t\t\t\tUniformsLib.normalmap,\n\t\t\t\tUniformsLib.displacementmap,\n\t\t\t\tUniformsLib.gradientmap,\n\t\t\t\tUniformsLib.fog,\n\t\t\t\tUniformsLib.lights,\n\t\t\t\t{\n\t\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\t\tshininess: { value: 30 }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t\t},\n\n\t\tstandard: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.envmap,\n\t\t\t\tUniformsLib.aomap,\n\t\t\t\tUniformsLib.lightmap,\n\t\t\t\tUniformsLib.emissivemap,\n\t\t\t\tUniformsLib.bumpmap,\n\t\t\t\tUniformsLib.normalmap,\n\t\t\t\tUniformsLib.displacementmap,\n\t\t\t\tUniformsLib.roughnessmap,\n\t\t\t\tUniformsLib.metalnessmap,\n\t\t\t\tUniformsLib.fog,\n\t\t\t\tUniformsLib.lights,\n\t\t\t\t{\n\t\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\t\troughness: { value: 0.5 },\n\t\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t\t},\n\n\t\tpoints: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.points,\n\t\t\t\tUniformsLib.fog\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.points_vert,\n\t\t\tfragmentShader: ShaderChunk.points_frag\n\n\t\t},\n\n\t\tdashed: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.fog,\n\t\t\t\t{\n\t\t\t\t\tscale: { value: 1 },\n\t\t\t\t\tdashSize: { value: 1 },\n\t\t\t\t\ttotalSize: { value: 2 }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t\t},\n\n\t\tdepth: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.displacementmap\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.depth_vert,\n\t\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t\t},\n\n\t\tnormal: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.bumpmap,\n\t\t\t\tUniformsLib.normalmap,\n\t\t\t\tUniformsLib.displacementmap,\n\t\t\t\t{\n\t\t\t\t\topacity: { value: 1.0 }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.normal_vert,\n\t\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t\t},\n\n\t\t/* -------------------------------------------------------------------------\n\t\t//\tCube map shader\n\t\t ------------------------------------------------------------------------- */\n\n\t\tcube: {\n\n\t\t\tuniforms: {\n\t\t\t\ttCube: { value: null },\n\t\t\t\ttFlip: { value: - 1 },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\n\t\t\tvertexShader: ShaderChunk.cube_vert,\n\t\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t\t},\n\n\t\tequirect: {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t\t},\n\n\t\tdistanceRGBA: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.common,\n\t\t\t\tUniformsLib.displacementmap,\n\t\t\t\t{\n\t\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t\t}\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t\t},\n\n\t\tshadow: {\n\n\t\t\tuniforms: UniformsUtils.merge( [\n\t\t\t\tUniformsLib.lights,\n\t\t\t\t{\n\t\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\t\topacity: { value: 1.0 }\n\t\t\t\t},\n\t\t\t] ),\n\n\t\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t\t}\n\n\t};\n\n\tShaderLib.physical = {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tShaderLib.standard.uniforms,\n\t\t\t{\n\t\t\t\tclearCoat: { value: 0 },\n\t\t\t\tclearCoatRoughness: { value: 0 }\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\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Box2( min, max ) {\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n\t}\n\n\tObject.assign( Box2.prototype, {\n\n\t\tset: function ( min, max ) {\n\n\t\t\tthis.min.copy( min );\n\t\t\tthis.max.copy( max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPoints: function ( points ) {\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCenterAndSize: function () {\n\n\t\t\tvar v1 = new Vector2();\n\n\t\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( box ) {\n\n\t\t\tthis.min.copy( box.min );\n\t\t\tthis.max.copy( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeEmpty: function () {\n\n\t\t\tthis.min.x = this.min.y = + Infinity;\n\t\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tisEmpty: function () {\n\n\t\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\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t\t},\n\n\t\tgetCenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector2();\n\t\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tgetSize: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector2();\n\t\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t\t},\n\n\t\texpandByPoint: function ( point ) {\n\n\t\t\tthis.min.min( point );\n\t\t\tthis.max.max( point );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByVector: function ( vector ) {\n\n\t\t\tthis.min.sub( vector );\n\t\t\tthis.max.add( vector );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByScalar: function ( scalar ) {\n\n\t\t\tthis.min.addScalar( - scalar );\n\t\t\tthis.max.addScalar( scalar );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t\t},\n\n\t\tcontainsBox: function ( box ) {\n\n\t\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t\t},\n\n\t\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\n\t\t\tvar result = optionalTarget || new Vector2();\n\n\t\t\treturn result.set(\n\t\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t\t);\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\t// using 4 splitting planes to rule out intersections\n\n\t\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector2();\n\t\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t\t},\n\n\t\tdistanceToPoint: function () {\n\n\t\t\tvar v1 = new Vector2();\n\n\t\t\treturn function distanceToPoint( point ) {\n\n\t\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersect: function ( box ) {\n\n\t\t\tthis.min.max( box.min );\n\t\t\tthis.max.min( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunion: function ( box ) {\n\n\t\t\tthis.min.min( box.min );\n\t\t\tthis.max.max( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.min.add( offset );\n\t\t\tthis.max.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( box ) {\n\n\t\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction WebGLFlareRenderer( renderer, gl, state, textures, capabilities ) {\n\n\t\tvar vertexBuffer, elementBuffer;\n\t\tvar shader, program, attributes, uniforms;\n\n\t\tvar tempTexture, occlusionTexture;\n\n\t\tfunction init() {\n\n\t\t\tvar vertices = new Float32Array( [\n\t\t\t\t- 1, - 1,  0, 0,\n\t\t\t\t 1, - 1,  1, 0,\n\t\t\t\t 1,  1,  1, 1,\n\t\t\t\t- 1,  1,  0, 1\n\t\t\t] );\n\n\t\t\tvar faces = new Uint16Array( [\n\t\t\t\t0, 1, 2,\n\t\t\t\t0, 2, 3\n\t\t\t] );\n\n\t\t\t// buffers\n\n\t\t\tvertexBuffer     = gl.createBuffer();\n\t\t\telementBuffer    = gl.createBuffer();\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t\t// textures\n\n\t\t\ttempTexture      = gl.createTexture();\n\t\t\tocclusionTexture = gl.createTexture();\n\n\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\t\tshader = {\n\n\t\t\t\tvertexShader: [\n\n\t\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\t\"vVisibility =        visibility.r / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *=       visibility.b / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\t\"}\"\n\n\t\t\t\t].join( \"\\n\" ),\n\n\t\t\t\tfragmentShader: [\n\n\t\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\t// pink square\n\n\t\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t\t// restore\n\n\t\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t\t// flare\n\n\t\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"}\"\n\n\t\t\t\t].join( \"\\n\" )\n\n\t\t\t};\n\n\t\t\tprogram = createProgram( shader );\n\n\t\t\tattributes = {\n\t\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\t\tuv:     gl.getAttribLocation ( program, \"uv\" )\n\t\t\t};\n\n\t\t\tuniforms = {\n\t\t\t\trenderType:     gl.getUniformLocation( program, \"renderType\" ),\n\t\t\t\tmap:            gl.getUniformLocation( program, \"map\" ),\n\t\t\t\tocclusionMap:   gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\t\topacity:        gl.getUniformLocation( program, \"opacity\" ),\n\t\t\t\tcolor:          gl.getUniformLocation( program, \"color\" ),\n\t\t\t\tscale:          gl.getUniformLocation( program, \"scale\" ),\n\t\t\t\trotation:       gl.getUniformLocation( program, \"rotation\" ),\n\t\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t\t};\n\n\t\t}\n\n\t\t/*\n\t\t * Render lens flares\n\t\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t\t *         reads these back and calculates occlusion.\n\t\t */\n\n\t\tthis.render = function ( flares, scene, camera, viewport ) {\n\n\t\t\tif ( flares.length === 0 ) return;\n\n\t\t\tvar tempPosition = new Vector3();\n\n\t\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\t\tvar size = 16 / viewport.w,\n\t\t\t\tscale = new Vector2( size * invAspect, size );\n\n\t\t\tvar screenPosition = new Vector3( 1, 1, 0 ),\n\t\t\t\tscreenPositionPixels = new Vector2( 1, 1 );\n\n\t\t\tvar validArea = new Box2();\n\n\t\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tinit();\n\n\t\t\t}\n\n\t\t\tstate.useProgram( program );\n\n\t\t\tstate.initAttributes();\n\t\t\tstate.enableAttribute( attributes.vertex );\n\t\t\tstate.enableAttribute( attributes.uv );\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\t// loop through all lens flares to update their occlusion and positions\n\t\t\t// setup gl and common used attribs/uniforms\n\n\t\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\t\tstate.disable( gl.CULL_FACE );\n\t\t\tstate.buffers.depth.setMask( false );\n\n\t\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\t\tsize = 16 / viewport.w;\n\t\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t\t// calc object screen position\n\n\t\t\t\tvar flare = flares[ i ];\n\n\t\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\t\ttempPosition.applyMatrix4( camera.projectionMatrix );\n\n\t\t\t\t// setup arrays for gl programs\n\n\t\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t\t// screen cull\n\n\t\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t\t// render pink quad\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t\t// restore graphics\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t\t// update object positions\n\n\t\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// render flares\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\n\t\t\t\t\t\t\ttextures.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 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}\n\n\t\t\t// restore gl\n\n\t\t\tstate.enable( gl.CULL_FACE );\n\t\t\tstate.enable( gl.DEPTH_TEST );\n\t\t\tstate.buffers.depth.setMask( true );\n\n\t\t\tstate.reset();\n\n\t\t};\n\n\t\tfunction createProgram( shader ) {\n\n\t\t\tvar program = gl.createProgram();\n\n\t\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\t\tvar prefix = \"precision \" + capabilities.precision + \" float;\\n\";\n\n\t\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\t\tgl.compileShader( fragmentShader );\n\t\t\tgl.compileShader( vertexShader );\n\n\t\t\tgl.attachShader( program, fragmentShader );\n\t\t\tgl.attachShader( program, vertexShader );\n\n\t\t\tgl.linkProgram( program );\n\n\t\t\treturn program;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n\tCanvasTexture.prototype = Object.create( Texture.prototype );\n\tCanvasTexture.prototype.constructor = CanvasTexture;\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction WebGLSpriteRenderer( renderer, gl, state, textures, capabilities ) {\n\n\t\tvar vertexBuffer, elementBuffer;\n\t\tvar program, attributes, uniforms;\n\n\t\tvar texture;\n\n\t\t// decompose matrixWorld\n\n\t\tvar spritePosition = new Vector3();\n\t\tvar spriteRotation = new Quaternion();\n\t\tvar spriteScale = new Vector3();\n\n\t\tfunction init() {\n\n\t\t\tvar vertices = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5,  0, 0,\n\t\t\t\t  0.5, - 0.5,  1, 0,\n\t\t\t\t  0.5,   0.5,  1, 1,\n\t\t\t\t- 0.5,   0.5,  0, 1\n\t\t\t] );\n\n\t\t\tvar faces = new Uint16Array( [\n\t\t\t\t0, 1, 2,\n\t\t\t\t0, 2, 3\n\t\t\t] );\n\n\t\t\tvertexBuffer  = gl.createBuffer();\n\t\t\telementBuffer = gl.createBuffer();\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t\tprogram = createProgram();\n\n\t\t\tattributes = {\n\t\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t\t};\n\n\t\t\tuniforms = {\n\t\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t\t};\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = 8;\n\t\t\tcanvas.height = 8;\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.fillStyle = 'white';\n\t\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\t\ttexture = new CanvasTexture( canvas );\n\n\t\t}\n\n\t\tthis.render = function ( sprites, scene, camera ) {\n\n\t\t\tif ( sprites.length === 0 ) return;\n\n\t\t\t// setup gl\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tinit();\n\n\t\t\t}\n\n\t\t\tstate.useProgram( program );\n\n\t\t\tstate.initAttributes();\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\tstate.enableAttribute( attributes.uv );\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\tstate.disable( gl.CULL_FACE );\n\t\t\tstate.enable( gl.BLEND );\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\t\tvar oldFogType = 0;\n\t\t\tvar sceneFogType = 0;\n\t\t\tvar fog = scene.fog;\n\n\t\t\tif ( fog ) {\n\n\t\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\t\tif ( fog.isFog ) {\n\n\t\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\t\toldFogType = 1;\n\t\t\t\t\tsceneFogType = 1;\n\n\t\t\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\t\toldFogType = 2;\n\t\t\t\t\tsceneFogType = 2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\t\toldFogType = 0;\n\t\t\t\tsceneFogType = 0;\n\n\t\t\t}\n\n\n\t\t\t// update positions and sort\n\n\t\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\t\tvar sprite = sprites[ i ];\n\n\t\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t\t}\n\n\t\t\tsprites.sort( painterSortStable );\n\n\t\t\t// render all sprites\n\n\t\t\tvar scale = [];\n\n\t\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\t\tvar sprite = sprites[ i ];\n\t\t\t\tvar material = sprite.material;\n\n\t\t\t\tif ( material.visible === false ) continue;\n\n\t\t\t\tsprite.onBeforeRender( renderer, scene, camera, undefined, material, undefined );\n\n\t\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\t\tvar fogType = 0;\n\n\t\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\t\tfogType = sceneFogType;\n\n\t\t\t\t}\n\n\t\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\t\toldFogType = fogType;\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.map !== null ) {\n\n\t\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t\t}\n\n\t\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\t\t\t\tstate.buffers.depth.setTest( material.depthTest );\n\t\t\t\tstate.buffers.depth.setMask( material.depthWrite );\n\n\t\t\t\ttextures.setTexture2D( material.map || texture, 0 );\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\tsprite.onAfterRender( renderer, scene, camera, undefined, material, undefined );\n\n\t\t\t}\n\n\t\t\t// restore gl\n\n\t\t\tstate.enable( gl.CULL_FACE );\n\n\t\t\tstate.reset();\n\n\t\t};\n\n\t\tfunction createProgram() {\n\n\t\t\tvar program = gl.createProgram();\n\n\t\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t\t'precision ' + capabilities.precision + ' float;',\n\n\t\t\t\t'#define SHADER_NAME ' + 'SpriteMaterial',\n\n\t\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t\t'uniform float rotation;',\n\t\t\t\t'uniform vec2 scale;',\n\t\t\t\t'uniform vec2 uvOffset;',\n\t\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t\t'attribute vec2 position;',\n\t\t\t\t'attribute vec2 uv;',\n\n\t\t\t\t'varying vec2 vUV;',\n\n\t\t\t\t'void main() {',\n\n\t\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t\t'}'\n\n\t\t\t].join( '\\n' ) );\n\n\t\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t\t'precision ' + capabilities.precision + ' float;',\n\n\t\t\t\t'#define SHADER_NAME ' + 'SpriteMaterial',\n\n\t\t\t\t'uniform vec3 color;',\n\t\t\t\t'uniform sampler2D map;',\n\t\t\t\t'uniform float opacity;',\n\n\t\t\t\t'uniform int fogType;',\n\t\t\t\t'uniform vec3 fogColor;',\n\t\t\t\t'uniform float fogDensity;',\n\t\t\t\t'uniform float fogNear;',\n\t\t\t\t'uniform float fogFar;',\n\t\t\t\t'uniform float alphaTest;',\n\n\t\t\t\t'varying vec2 vUV;',\n\n\t\t\t\t'void main() {',\n\n\t\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t\t'}',\n\n\t\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t'}'\n\n\t\t\t].join( '\\n' ) );\n\n\t\t\tgl.compileShader( vertexShader );\n\t\t\tgl.compileShader( fragmentShader );\n\n\t\t\tgl.attachShader( program, vertexShader );\n\t\t\tgl.attachShader( program, fragmentShader );\n\n\t\t\tgl.linkProgram( program );\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction painterSortStable( a, b ) {\n\n\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t\t} else if ( a.z !== b.z ) {\n\n\t\t\t\treturn b.z - a.z;\n\n\t\t\t} else {\n\n\t\t\t\treturn b.id - a.id;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tvar materialId = 0;\n\n\tfunction Material() {\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = _Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\t\tthis.lights = true;\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.flatShading = false;\n\t\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\t\tthis.opacity = 1;\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.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\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.alphaTest = 0;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\t\tthis.visible = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n\tObject.assign( Material.prototype, EventDispatcher.prototype, {\n\n\t\tisMaterial: true,\n\n\t\tonBeforeCompile: function () {},\n\n\t\tsetValues: function ( values ) {\n\n\t\t\tif ( values === undefined ) return;\n\n\t\t\tfor ( var key in values ) {\n\n\t\t\t\tvar newValue = values[ key ];\n\n\t\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar currentValue = this[ key ];\n\n\t\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar isRoot = meta === undefined;\n\n\t\t\tif ( isRoot ) {\n\n\t\t\t\tmeta = {\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {}\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Material',\n\t\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard Material serialization\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t\t}\n\t\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t\t}\n\t\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t\t}\n\t\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t\t}\n\n\t\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\t\tdata.depthFunc = this.depthFunc;\n\t\t\tdata.depthTest = this.depthTest;\n\t\t\tdata.depthWrite = this.depthWrite;\n\n\t\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\t\tif ( this.visible === false ) data.visible = false;\n\t\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t\t// TODO: Copied from Object3D.toJSON\n\n\t\t\tfunction extractFromCache( cache ) {\n\n\t\t\t\tvar values = [];\n\n\t\t\t\tfor ( var key in cache ) {\n\n\t\t\t\t\tvar data = cache[ key ];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push( data );\n\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\n\t\t\t}\n\n\t\t\tif ( isRoot ) {\n\n\t\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.name = source.name;\n\n\t\t\tthis.fog = source.fog;\n\t\t\tthis.lights = source.lights;\n\n\t\t\tthis.blending = source.blending;\n\t\t\tthis.side = source.side;\n\t\t\tthis.flatShading = source.flatShading;\n\t\t\tthis.vertexColors = source.vertexColors;\n\n\t\t\tthis.opacity = source.opacity;\n\t\t\tthis.transparent = source.transparent;\n\n\t\t\tthis.blendSrc = source.blendSrc;\n\t\t\tthis.blendDst = source.blendDst;\n\t\t\tthis.blendEquation = source.blendEquation;\n\t\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\t\tthis.depthFunc = source.depthFunc;\n\t\t\tthis.depthTest = source.depthTest;\n\t\t\tthis.depthWrite = source.depthWrite;\n\n\t\t\tthis.colorWrite = source.colorWrite;\n\n\t\t\tthis.precision = source.precision;\n\n\t\t\tthis.polygonOffset = source.polygonOffset;\n\t\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\t\tthis.dithering = source.dithering;\n\n\t\t\tthis.alphaTest = source.alphaTest;\n\t\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\t\tthis.overdraw = source.overdraw;\n\n\t\t\tthis.visible = source.visible;\n\t\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\t\tthis.clipShadows = source.clipShadows;\n\t\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\t\tdstPlanes = null;\n\n\t\t\tif ( srcPlanes !== null ) {\n\n\t\t\t\tvar n = srcPlanes.length;\n\t\t\t\tdstPlanes = new Array( n );\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t\tthis.clippingPlanes = dstPlanes;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  defines: { \"label\" : \"value\" },\n\t *  uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n\t *\n\t *  fragmentShader: <string>,\n\t *  vertexShader: <string>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  lights: <bool>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tfunction ShaderMaterial( parameters ) {\n\n\t\tMaterial.call( this );\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\t\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\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.skinning = false; // set to use skinning attribute streams\n\t\tthis.morphTargets = false; // set to use morph targets\n\t\tthis.morphNormals = false; // set to use morph normals\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\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\tShaderMaterial.prototype = Object.create( Material.prototype );\n\tShaderMaterial.prototype.constructor = ShaderMaterial;\n\n\tShaderMaterial.prototype.isShaderMaterial = true;\n\n\tShaderMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\t\tthis.defines = 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.skinning = source.skinning;\n\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\tthis.extensions = source.extensions;\n\n\t\treturn this;\n\n\t};\n\n\tShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\t\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\t\tdata.uniforms = this.uniforms;\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\treturn data;\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author bhouston / https://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>\n\t * }\n\t */\n\n\tfunction MeshDepthMaterial( parameters ) {\n\n\t\tMaterial.call( this );\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\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\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshDepthMaterial.prototype = Object.create( Material.prototype );\n\tMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\n\tMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n\tMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\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\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *\n\t *  referencePosition: <float>,\n\t *  nearDistance: <float>,\n\t *  farDistance: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>\n\t *\n\t * }\n\t */\n\n\tfunction MeshDistanceMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.skinning = false;\n\t\tthis.morphTargets = false;\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\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshDistanceMaterial.prototype = Object.create( Material.prototype );\n\tMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\n\tMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\n\tMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\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\t/**\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction Box3( min, max ) {\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n\t}\n\n\tObject.assign( Box3.prototype, {\n\n\t\tisBox3: true,\n\n\t\tset: function ( min, max ) {\n\n\t\t\tthis.min.copy( min );\n\t\t\tthis.max.copy( max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromArray: function ( array ) {\n\n\t\t\tvar minX = + Infinity;\n\t\t\tvar minY = + Infinity;\n\t\t\tvar minZ = + Infinity;\n\n\t\t\tvar maxX = - Infinity;\n\t\t\tvar maxY = - Infinity;\n\t\t\tvar maxZ = - Infinity;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar x = array[ i ];\n\t\t\t\tvar y = array[ i + 1 ];\n\t\t\t\tvar z = array[ i + 2 ];\n\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\t\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t\t}\n\n\t\t\tthis.min.set( minX, minY, minZ );\n\t\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\t\tvar minX = + Infinity;\n\t\t\tvar minY = + Infinity;\n\t\t\tvar minZ = + Infinity;\n\n\t\t\tvar maxX = - Infinity;\n\t\t\tvar maxY = - Infinity;\n\t\t\tvar maxZ = - Infinity;\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tvar x = attribute.getX( i );\n\t\t\t\tvar y = attribute.getY( i );\n\t\t\t\tvar z = attribute.getZ( i );\n\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\t\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t\t}\n\n\t\t\tthis.min.set( minX, minY, minZ );\n\t\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPoints: function ( points ) {\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCenterAndSize: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetFromObject: function ( object ) {\n\n\t\t\tthis.makeEmpty();\n\n\t\t\treturn this.expandByObject( object );\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( box ) {\n\n\t\t\tthis.min.copy( box.min );\n\t\t\tthis.max.copy( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeEmpty: function () {\n\n\t\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tisEmpty: function () {\n\n\t\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\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t\t},\n\n\t\tgetCenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tgetSize: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t\t},\n\n\t\texpandByPoint: function ( point ) {\n\n\t\t\tthis.min.min( point );\n\t\t\tthis.max.max( point );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByVector: function ( vector ) {\n\n\t\t\tthis.min.sub( vector );\n\t\t\tthis.max.add( vector );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByScalar: function ( scalar ) {\n\n\t\t\tthis.min.addScalar( - scalar );\n\t\t\tthis.max.addScalar( scalar );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByObject: function () {\n\n\t\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t\t// accounting for both the object's, and children's, world transforms\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function expandByObject( object ) {\n\n\t\t\t\tvar scope = this;\n\n\t\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\t\tvar i, l;\n\n\t\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\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} );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t\t},\n\n\t\tcontainsBox: function ( box ) {\n\n\t\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t\t},\n\n\t\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn result.set(\n\t\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t\t);\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\t// using 6 splitting planes to rule out intersections.\n\t\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t\t},\n\n\t\tintersectsSphere: ( function () {\n\n\t\t\tvar closestPoint = new Vector3();\n\n\t\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\t\tvar min, max;\n\n\t\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t\t} else {\n\n\t\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t\t}\n\n\t\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t\t} else {\n\n\t\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t\t}\n\n\t\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t\t} else {\n\n\t\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t\t}\n\n\t\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t\t},\n\n\t\tdistanceToPoint: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function distanceToPoint( point ) {\n\n\t\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetBoundingSphere: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Sphere();\n\n\t\t\t\tthis.getCenter( result.center );\n\n\t\t\t\tresult.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersect: function ( box ) {\n\n\t\t\tthis.min.max( box.min );\n\t\t\tthis.max.min( box.max );\n\n\t\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\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunion: function ( box ) {\n\n\t\t\tthis.min.min( box.min );\n\t\t\tthis.max.max( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function () {\n\n\t\t\tvar points = [\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3(),\n\t\t\t\tnew Vector3()\n\t\t\t];\n\n\t\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t\t// transform of empty box is an empty box.\n\t\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\t\tthis.setFromPoints( points );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.min.add( offset );\n\t\t\tthis.max.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( box ) {\n\n\t\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Sphere( center, radius ) {\n\n\t\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\t\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n\t}\n\n\tObject.assign( Sphere.prototype, {\n\n\t\tset: function ( center, radius ) {\n\n\t\t\tthis.center.copy( center );\n\t\t\tthis.radius = radius;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPoints: function () {\n\n\t\t\tvar box = new Box3();\n\n\t\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\t\tvar center = this.center;\n\n\t\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t\t}\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( sphere ) {\n\n\t\t\tthis.center.copy( sphere.center );\n\t\t\tthis.radius = sphere.radius;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tempty: function () {\n\n\t\t\treturn ( this.radius <= 0 );\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t\t},\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\treturn box.intersectsSphere( this );\n\n\t\t},\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tresult.copy( point );\n\n\t\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t\tresult.sub( this.center ).normalize();\n\t\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\t\tvar box = optionalTarget || new Box3();\n\n\t\t\tbox.set( this.center, this.center );\n\t\t\tbox.expandByScalar( this.radius );\n\n\t\t\treturn box;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( matrix ) {\n\n\t\t\tthis.center.applyMatrix4( matrix );\n\t\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.center.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( sphere ) {\n\n\t\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t * @author tschw\n\t */\n\n\tfunction Matrix3() {\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\tObject.assign( Matrix3.prototype, {\n\n\t\tisMatrix3: true,\n\n\t\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tidentity: function () {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0,\n\t\t\t\t0, 1, 0,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().fromArray( this.elements );\n\n\t\t},\n\n\t\tcopy: function ( m ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrix4: function ( m ) {\n\n\t\t\tvar me = m.elements;\n\n\t\t\tthis.set(\n\n\t\t\t\tme[ 0 ], me[ 4 ], me[  8 ],\n\t\t\t\tme[ 1 ], me[ 5 ], me[  9 ],\n\t\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyToBufferAttribute: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t\t}\n\n\t\t\t\treturn attribute;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmultiply: function ( m ) {\n\n\t\t\treturn this.multiplyMatrices( this, m );\n\n\t\t},\n\n\t\tpremultiply: function ( m ) {\n\n\t\t\treturn this.multiplyMatrices( m, this );\n\n\t\t},\n\n\t\tmultiplyMatrices: function ( a, b ) {\n\n\t\t\tvar ae = a.elements;\n\t\t\tvar be = b.elements;\n\t\t\tvar te = this.elements;\n\n\t\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdeterminant: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t\t},\n\n\t\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t\t}\n\n\t\t\tvar me = matrix.elements,\n\t\t\t\tte = this.elements,\n\n\t\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\t\tif ( det === 0 ) {\n\n\t\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\t\tthrow new Error( msg );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( msg );\n\n\t\t\t\t}\n\n\t\t\t\treturn this.identity();\n\n\t\t\t}\n\n\t\t\tvar detInv = 1 / det;\n\n\t\t\tte[ 0 ] = t11 * detInv;\n\t\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\t\tte[ 3 ] = t12 * detInv;\n\t\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\t\tte[ 6 ] = t13 * detInv;\n\t\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranspose: function () {\n\n\t\t\tvar tmp, m = this.elements;\n\n\t\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t\t},\n\n\t\ttransposeIntoArray: function ( r ) {\n\n\t\t\tvar m = this.elements;\n\n\t\t\tr[ 0 ] = m[ 0 ];\n\t\t\tr[ 1 ] = m[ 3 ];\n\t\t\tr[ 2 ] = m[ 6 ];\n\t\t\tr[ 3 ] = m[ 1 ];\n\t\t\tr[ 4 ] = m[ 4 ];\n\t\t\tr[ 5 ] = m[ 7 ];\n\t\t\tr[ 6 ] = m[ 2 ];\n\t\t\tr[ 7 ] = m[ 5 ];\n\t\t\tr[ 8 ] = m[ 8 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( matrix ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = matrix.elements;\n\n\t\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar te = this.elements;\n\n\t\t\tarray[ offset ] = te[ 0 ];\n\t\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\t\treturn array;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Plane( normal, constant ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n\t}\n\n\tObject.assign( Plane.prototype, {\n\n\t\tset: function ( normal, constant ) {\n\n\t\t\tthis.normal.copy( normal );\n\t\t\tthis.constant = constant;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponents: function ( x, y, z, w ) {\n\n\t\t\tthis.normal.set( x, y, z );\n\t\t\tthis.constant = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\t\tthis.normal.copy( normal );\n\t\t\tthis.constant = - point.dot( this.normal );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCoplanarPoints: function () {\n\n\t\t\tvar v1 = new Vector3();\n\t\t\tvar v2 = new Vector3();\n\n\t\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( plane ) {\n\n\t\t\tthis.normal.copy( plane.normal );\n\t\t\tthis.constant = plane.constant;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\t\tthis.constant *= inverseNormalLength;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.constant *= - 1;\n\t\t\tthis.normal.negate();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn this.normal.dot( point ) + this.constant;\n\n\t\t},\n\n\t\tdistanceToSphere: function ( sphere ) {\n\n\t\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t\t},\n\n\t\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn result.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t\t},\n\n\t\tintersectLine: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\tvar direction = line.delta( v1 );\n\n\t\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t\t// line is coplanar, return origin\n\t\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\t\treturn undefined;\n\n\t\t\t\t}\n\n\t\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\t\treturn undefined;\n\n\t\t\t\t}\n\n\t\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsLine: function ( line ) {\n\n\t\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\t\tvar startSign = this.distanceToPoint( line.start );\n\t\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\treturn box.intersectsPlane( this );\n\n\t\t},\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\treturn sphere.intersectsPlane( this );\n\n\t\t},\n\n\t\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t\t},\n\n\t\tapplyMatrix4: function () {\n\n\t\t\tvar v1 = new Vector3();\n\t\t\tvar m1 = new Matrix3();\n\n\t\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.constant -= offset.dot( this.normal );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( plane ) {\n\n\t\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tthis.planes = [\n\n\t\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t\t];\n\n\t}\n\n\tObject.assign( Frustum.prototype, {\n\n\t\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tplanes[ 0 ].copy( p0 );\n\t\t\tplanes[ 1 ].copy( p1 );\n\t\t\tplanes[ 2 ].copy( p2 );\n\t\t\tplanes[ 3 ].copy( p3 );\n\t\t\tplanes[ 4 ].copy( p4 );\n\t\t\tplanes[ 5 ].copy( p5 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( frustum ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrix: function ( m ) {\n\n\t\t\tvar planes = this.planes;\n\t\t\tvar me = m.elements;\n\t\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tintersectsObject: function () {\n\n\t\t\tvar sphere = new Sphere();\n\n\t\t\treturn function intersectsObject( object ) {\n\n\t\t\t\tvar geometry = object.geometry;\n\n\t\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSprite: function () {\n\n\t\t\tvar sphere = new Sphere();\n\n\t\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\tvar planes = this.planes;\n\t\t\tvar center = sphere.center;\n\t\t\tvar negRadius = - sphere.radius;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tintersectsBox: function () {\n\n\t\t\tvar p1 = new Vector3(),\n\t\t\t\tp2 = new Vector3();\n\n\t\t\treturn function intersectsBox( box ) {\n\n\t\t\t\tvar planes = this.planes;\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\t\tvar _frustum = new Frustum(),\n\t\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t\t_shadowMapSize = new Vector2(),\n\t\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t\t_lookTarget = new Vector3(),\n\t\t\t_lightPositionWorld = new Vector3(),\n\n\t\t\t_MorphingFlag = 1,\n\t\t\t_SkinningFlag = 2,\n\n\t\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t\t_materialCache = {};\n\n\t\tvar 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\tvar 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\tvar cube2DViewPorts = [\n\t\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\t\tnew Vector4(), new Vector4(), new Vector4()\n\t\t];\n\n\t\t// init\n\n\t\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t\t//\n\n\t\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t\t}\n\n\t\t//\n\n\t\tvar scope = this;\n\n\t\tthis.enabled = false;\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis.type = PCFShadowMap;\n\n\t\tthis.renderReverseSided = true;\n\t\tthis.renderSingleSided = true;\n\n\t\tthis.render = function ( lights, scene, camera ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\t\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\t\tif ( lights.length === 0 ) return;\n\n\t\t\t// TODO Clean up (needed in case of contextlost)\n\t\t\tvar _gl = _renderer.context;\n\t\t\tvar _state = _renderer.state;\n\n\t\t\t// Set GL state for depth map.\n\t\t\t_state.disable( _gl.BLEND );\n\t\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t\t_state.buffers.depth.setTest( true );\n\t\t\t_state.setScissorTest( false );\n\n\t\t\t// render depth map\n\n\t\t\tvar faceCount;\n\n\t\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\t\tvar light = lights[ i ];\n\t\t\t\tvar shadow = light.shadow;\n\t\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t\t// following orientation:\n\t\t\t\t\t//\n\t\t\t\t\t//  xzXZ\n\t\t\t\t\t//   y Y\n\t\t\t\t\t//\n\t\t\t\t\t// X - Positive x direction\n\t\t\t\t\t// x - Negative x direction\n\t\t\t\t\t// Y - Positive y direction\n\t\t\t\t\t// y - Negative y direction\n\t\t\t\t\t// Z - Positive z direction\n\t\t\t\t\t// z - Negative z direction\n\n\t\t\t\t\t// positive X\n\t\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// negative X\n\t\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// positive Z\n\t\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// negative Z\n\t\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// positive Y\n\t\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t\t// negative Y\n\t\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t\t}\n\n\t\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\t\tshadow.update( light );\n\n\t\t\t\t}\n\n\t\t\t\tvar shadowMap = shadow.map;\n\t\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\tfaceCount = 6;\n\n\t\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfaceCount = 1;\n\n\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\t// compute shadow matrix\n\n\t\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t\t);\n\n\t\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t}\n\n\t\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t\t_renderer.clear();\n\n\t\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t\t// run a single pass if not\n\n\t\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.needsUpdate = false;\n\n\t\t};\n\n\t\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tvar result = null;\n\n\t\t\tvar materialVariants = _depthMaterials;\n\t\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t\t}\n\n\t\t\tif ( ! customMaterial ) {\n\n\t\t\t\tvar useMorphing = false;\n\n\t\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\t\tvar variantIndex = 0;\n\n\t\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t\t} else {\n\n\t\t\t\tresult = customMaterial;\n\n\t\t\t}\n\n\t\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult.visible = material.visible;\n\t\t\tresult.wireframe = material.wireframe;\n\n\t\t\tvar side = material.side;\n\n\t\t\tif ( scope.renderSingleSided && side == DoubleSide ) {\n\n\t\t\t\tside = FrontSide;\n\n\t\t\t}\n\n\t\t\tif ( scope.renderReverseSided ) {\n\n\t\t\t\tif ( side === FrontSide ) side = BackSide;\n\t\t\t\telse if ( side === BackSide ) side = FrontSide;\n\n\t\t\t}\n\n\t\t\tresult.side = side;\n\n\t\t\tresult.clipShadows = material.clipShadows;\n\t\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\t\tresult.linewidth = material.linewidth;\n\n\t\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tvar visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, 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\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar children = object.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLAttributes( gl ) {\n\n\t\tvar buffers = {};\n\n\t\tfunction createBuffer( attribute, bufferType ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar usage = attribute.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\t\tvar buffer = gl.createBuffer();\n\n\t\t\tgl.bindBuffer( bufferType, buffer );\n\t\t\tgl.bufferData( bufferType, array, usage );\n\n\t\t\tattribute.onUploadCallback();\n\n\t\t\tvar type = gl.FLOAT;\n\n\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\ttype = gl.FLOAT;\n\n\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\ttype = gl.SHORT;\n\n\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\ttype = gl.INT;\n\n\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\ttype = gl.BYTE;\n\n\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbuffer: buffer,\n\t\t\t\ttype: type,\n\t\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\t\tversion: attribute.version\n\t\t\t};\n\n\t\t}\n\n\t\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar updateRange = attribute.updateRange;\n\n\t\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\t\tif ( attribute.dynamic === false ) {\n\n\t\t\t\tgl.bufferData( bufferType, array, gl.STATIC_DRAW );\n\n\t\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t\t// Not using update ranges\n\n\t\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t\t} else if ( updateRange.count === 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\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\tupdateRange.count = -1; // reset range\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction get( attribute ) {\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\t\treturn buffers[ attribute.uuid ];\n\n\t\t}\n\n\t\tfunction remove( attribute ) {\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\t\t\t\n\t\t\tvar data = buffers[ attribute.uuid ];\n\n\t\t\tif ( data ) {\n\n\t\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\t\tdelete buffers[ attribute.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction update( attribute, bufferType ) {\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\t\tvar data = buffers[ attribute.uuid ];\n\n\t\t\tif ( data === undefined ) {\n\n\t\t\t\tbuffers[ attribute.uuid ] = createBuffer( attribute, bufferType );\n\n\t\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\t\tdata.version = attribute.version;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tget: get,\n\t\t\tremove: remove,\n\t\t\tupdate: update\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Euler( x, y, z, order ) {\n\n\t\tthis._x = x || 0;\n\t\tthis._y = y || 0;\n\t\tthis._z = z || 0;\n\t\tthis._order = order || Euler.DefaultOrder;\n\n\t}\n\n\tEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\n\tEuler.DefaultOrder = 'XYZ';\n\n\tObject.defineProperties( Euler.prototype, {\n\n\t\tx: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._x;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._x = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\ty: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._y;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._y = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\tz: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._z;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._z = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t},\n\n\t\torder: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this._order;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tthis._order = value;\n\t\t\t\tthis.onChangeCallback();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Euler.prototype, {\n\n\t\tisEuler: true,\n\n\t\tset: function ( x, y, z, order ) {\n\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._order = order || this._order;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t\t},\n\n\t\tcopy: function ( euler ) {\n\n\t\t\tthis._x = euler._x;\n\t\t\tthis._y = euler._y;\n\t\t\tthis._z = euler._z;\n\t\t\tthis._order = euler._order;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\t\tvar clamp = _Math.clamp;\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar te = m.elements;\n\t\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\t\torder = order || this._order;\n\n\t\t\tif ( order === 'XYZ' ) {\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\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} else if ( order === 'YXZ' ) {\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\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} else if ( order === 'ZXY' ) {\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\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} else if ( order === 'ZYX' ) {\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\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} else if ( order === 'YZX' ) {\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\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} else if ( order === 'XZY' ) {\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\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} else {\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t\t}\n\n\t\t\tthis._order = order;\n\n\t\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromQuaternion: function () {\n\n\t\t\tvar matrix = new Matrix4();\n\n\t\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetFromVector3: function ( v, order ) {\n\n\t\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t\t},\n\n\t\treorder: function () {\n\n\t\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t\tvar q = new Quaternion();\n\n\t\t\treturn function reorder( newOrder ) {\n\n\t\t\t\tq.setFromEuler( this );\n\n\t\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tequals: function ( euler ) {\n\n\t\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t\t},\n\n\t\tfromArray: function ( array ) {\n\n\t\t\tthis._x = array[ 0 ];\n\t\t\tthis._y = array[ 1 ];\n\t\t\tthis._z = array[ 2 ];\n\t\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this._x;\n\t\t\tarray[ offset + 1 ] = this._y;\n\t\t\tarray[ offset + 2 ] = this._z;\n\t\t\tarray[ offset + 3 ] = this._order;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\ttoVector3: function ( optionalResult ) {\n\n\t\t\tif ( optionalResult ) {\n\n\t\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t\t} else {\n\n\t\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t\t}\n\n\t\t},\n\n\t\tonChange: function ( callback ) {\n\n\t\t\tthis.onChangeCallback = callback;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tonChangeCallback: function () {}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Layers() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tObject.assign( Layers.prototype, {\n\n\t\tset: function ( channel ) {\n\n\t\t\tthis.mask = 1 << channel | 0;\n\n\t\t},\n\n\t\tenable: function ( channel ) {\n\n\t\t\tthis.mask |= 1 << channel | 0;\n\n\t\t},\n\n\t\ttoggle: function ( channel ) {\n\n\t\t\tthis.mask ^= 1 << channel | 0;\n\n\t\t},\n\n\t\tdisable: function ( channel ) {\n\n\t\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t\t},\n\n\t\ttest: function ( layers ) {\n\n\t\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author elephantatwork / www.elephantatwork.ch\n\t */\n\n\tvar object3DId = 0;\n\n\tfunction Object3D() {\n\n\t\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\t\tthis.uuid = _Math.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\tvar position = new Vector3();\n\t\tvar rotation = new Euler();\n\t\tvar quaternion = new Quaternion();\n\t\tvar 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\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\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.userData = {};\n\t}\n\n\tObject3D.DefaultUp = new Vector3( 0, 1, 0 );\n\tObject3D.DefaultMatrixAutoUpdate = true;\n\n\tObject.assign( Object3D.prototype, EventDispatcher.prototype, {\n\n\t\tisObject3D: true,\n\n\t\tonBeforeRender: function () {},\n\t\tonAfterRender: function () {},\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t\t},\n\n\t\tapplyQuaternion: function ( q ) {\n\n\t\t\tthis.quaternion.premultiply( q );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t\t// assumes axis is normalized\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t\t},\n\n\t\tsetRotationFromEuler: function ( euler ) {\n\n\t\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t\t},\n\n\t\tsetRotationFromMatrix: function ( m ) {\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t\t},\n\n\t\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t\t// assumes q is normalized\n\n\t\t\tthis.quaternion.copy( q );\n\n\t\t},\n\n\t\trotateOnAxis: function () {\n\n\t\t\t// rotate object on axis in object space\n\t\t\t// axis is assumed to be normalized\n\n\t\t\tvar q1 = new Quaternion();\n\n\t\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateX: function () {\n\n\t\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateOnAxis: function () {\n\n\t\t\t// translate object by distance along axis in object space\n\t\t\t// axis is assumed to be normalized\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateX: function () {\n\n\t\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\t\treturn function translateX( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateY: function () {\n\n\t\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\t\treturn function translateY( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateZ: function () {\n\n\t\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\t\treturn function translateZ( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlocalToWorld: function ( vector ) {\n\n\t\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t\t},\n\n\t\tworldToLocal: function () {\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function worldToLocal( vector ) {\n\n\t\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\t// This method does not support objects with rotated and/or translated parent(s)\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tif ( this.isCamera ) {\n\n\t\t\t\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\t\t}\n\n\t\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tadd: function ( object ) {\n\n\t\t\tif ( arguments.length > 1 ) {\n\n\t\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tif ( object === this ) {\n\n\t\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\t\tobject.parent.remove( object );\n\n\t\t\t\t}\n\n\t\t\t\tobject.parent = this;\n\t\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\t\tthis.children.push( object );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tremove: function ( object ) {\n\n\t\t\tif ( arguments.length > 1 ) {\n\n\t\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar index = this.children.indexOf( object );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tobject.parent = null;\n\n\t\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\t\tthis.children.splice( index, 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetObjectById: function ( id ) {\n\n\t\t\treturn this.getObjectByProperty( 'id', id );\n\n\t\t},\n\n\t\tgetObjectByName: function ( name ) {\n\n\t\t\treturn this.getObjectByProperty( 'name', name );\n\n\t\t},\n\n\t\tgetObjectByProperty: function ( name, value ) {\n\n\t\t\tif ( this[ name ] === value ) return this;\n\n\t\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = this.children[ i ];\n\t\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\t\tif ( object !== undefined ) {\n\n\t\t\t\t\treturn object;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t},\n\n\t\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t\t},\n\n\t\tgetWorldQuaternion: function () {\n\n\t\t\tvar position = new Vector3();\n\t\t\tvar scale = new Vector3();\n\n\t\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Quaternion();\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldRotation: function () {\n\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Euler();\n\n\t\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldScale: function () {\n\n\t\t\tvar position = new Vector3();\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldDirection: function () {\n\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\traycast: function () {},\n\n\t\ttraverse: function ( callback ) {\n\n\t\t\tcallback( this );\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].traverse( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttraverseVisible: function ( callback ) {\n\n\t\t\tif ( this.visible === false ) return;\n\n\t\t\tcallback( this );\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttraverseAncestors: function ( callback ) {\n\n\t\t\tvar parent = this.parent;\n\n\t\t\tif ( parent !== null ) {\n\n\t\t\t\tcallback( parent );\n\n\t\t\t\tparent.traverseAncestors( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdateMatrix: function () {\n\n\t\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t\t},\n\n\t\tupdateMatrixWorld: function ( force ) {\n\n\t\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\t\tforce = true;\n\n\t\t\t}\n\n\t\t\t// update children\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\t// meta is '' when called from JSON.stringify\n\t\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\t\tvar output = {};\n\n\t\t\t// meta is a hash used to collect geometries, materials.\n\t\t\t// not providing it implies that this is the root object\n\t\t\t// being serialized.\n\t\t\tif ( isRootObject ) {\n\n\t\t\t\t// initialize meta obj\n\t\t\t\tmeta = {\n\t\t\t\t\tgeometries: {},\n\t\t\t\t\tmaterials: {},\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {}\n\t\t\t\t};\n\n\t\t\t\toutput.metadata = {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Object',\n\t\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// standard Object3D serialization\n\n\t\t\tvar object = {};\n\n\t\t\tobject.uuid = this.uuid;\n\t\t\tobject.type = this.type;\n\n\t\t\tif ( this.name !== '' ) object.name = this.name;\n\t\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\t\tif ( this.visible === false ) object.visible = false;\n\t\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\t\tobject.matrix = this.matrix.toArray();\n\n\t\t\t//\n\n\t\t\tfunction serialize( library, element ) {\n\n\t\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t\t}\n\n\t\t\t\treturn element.uuid;\n\n\t\t\t}\n\n\t\t\tif ( this.geometry !== undefined ) {\n\n\t\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\t}\n\n\t\t\tif ( this.material !== undefined ) {\n\n\t\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\t\tvar uuids = [];\n\n\t\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.material = uuids;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( this.children.length > 0 ) {\n\n\t\t\t\tobject.children = [];\n\n\t\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( isRootObject ) {\n\n\t\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t\t}\n\n\t\t\toutput.object = object;\n\n\t\t\treturn output;\n\n\t\t\t// extract data from the cache hash\n\t\t\t// remove metadata on each item\n\t\t\t// and return as array\n\t\t\tfunction extractFromCache( cache ) {\n\n\t\t\t\tvar values = [];\n\t\t\t\tfor ( var key in cache ) {\n\n\t\t\t\t\tvar data = cache[ key ];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push( data );\n\n\t\t\t\t}\n\t\t\t\treturn values;\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function ( recursive ) {\n\n\t\t\treturn new this.constructor().copy( this, recursive );\n\n\t\t},\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tif ( recursive === undefined ) recursive = true;\n\n\t\t\tthis.name = source.name;\n\n\t\t\tthis.up.copy( source.up );\n\n\t\t\tthis.position.copy( source.position );\n\t\t\tthis.quaternion.copy( source.quaternion );\n\t\t\tthis.scale.copy( source.scale );\n\n\t\t\tthis.matrix.copy( source.matrix );\n\t\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\t\tthis.layers.mask = source.layers.mask;\n\t\t\tthis.visible = source.visible;\n\n\t\t\tthis.castShadow = source.castShadow;\n\t\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\t\tthis.frustumCulled = source.frustumCulled;\n\t\t\tthis.renderOrder = source.renderOrder;\n\n\t\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\t\tif ( recursive === true ) {\n\n\t\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\t\tvar child = source.children[ i ];\n\t\t\t\t\tthis.add( child.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tfunction Camera() {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\t\tthis.projectionMatrix = new Matrix4();\n\n\t}\n\n\tCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Camera,\n\n\t\tisCamera: true,\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\t\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetWorldDirection: function () {\n\n\t\t\tvar quaternion = new Quaternion();\n\n\t\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tupdateMatrixWorld: function ( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author arose / http://github.com/arose\n\t */\n\n\tfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\t\tCamera.call( this );\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 !== undefined ) ? near : 0.1;\n\t\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\t\tconstructor: OrthographicCamera,\n\n\t\tisOrthographicCamera: true,\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\t\tthis.left = source.left;\n\t\t\tthis.right = source.right;\n\t\t\tthis.top = source.top;\n\t\t\tthis.bottom = source.bottom;\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\n\t\t\tthis.zoom = source.zoom;\n\t\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\t\tthis.view = {\n\t\t\t\tfullWidth: fullWidth,\n\t\t\t\tfullHeight: fullHeight,\n\t\t\t\toffsetX: x,\n\t\t\t\toffsetY: y,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tclearViewOffset: function() {\n\n\t\t\tthis.view = null;\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tupdateProjectionMatrix: function () {\n\n\t\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\t\tvar cx = ( this.right + this.left ) / 2;\n\t\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\t\tvar left = cx - dx;\n\t\t\tvar right = cx + dx;\n\t\t\tvar top = cy + dy;\n\t\t\tvar bottom = cy - dy;\n\n\t\t\tif ( this.view !== null ) {\n\n\t\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t\t}\n\n\t\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.zoom = this.zoom;\n\t\t\tdata.object.left = this.left;\n\t\t\tdata.object.right = this.right;\n\t\t\tdata.object.top = this.top;\n\t\t\tdata.object.bottom = this.bottom;\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\n\t\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author greggman / http://games.greggman.com/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author tschw\n\t */\n\n\tfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\t\tCamera.call( this );\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov !== undefined ? fov : 50;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near !== undefined ? near : 0.1;\n\t\tthis.far = far !== undefined ? far : 2000;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect !== undefined ? aspect : 1;\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\tPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\t\tconstructor: PerspectiveCamera,\n\n\t\tisPerspectiveCamera: true,\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\t\tthis.fov = source.fov;\n\t\t\tthis.zoom = source.zoom;\n\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\t\t\tthis.focus = source.focus;\n\n\t\t\tthis.aspect = source.aspect;\n\t\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\t\tthis.filmGauge = source.filmGauge;\n\t\t\tthis.filmOffset = source.filmOffset;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t/**\n\t\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t\t *\n\t\t * The default film gauge is 35, so that the focal length can be specified for\n\t\t * a 35mm (full frame) camera.\n\t\t *\n\t\t * Values for focal length and film gauge must have the same unit.\n\t\t */\n\t\tsetFocalLength: function ( focalLength ) {\n\n\t\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\t/**\n\t\t * Calculates the focal length from the current .fov and .filmGauge.\n\t\t */\n\t\tgetFocalLength: function () {\n\n\t\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t\t},\n\n\t\tgetEffectiveFOV: function () {\n\n\t\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t\t},\n\n\t\tgetFilmWidth: function () {\n\n\t\t\t// film not completely covered in portrait format (aspect < 1)\n\t\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t\t},\n\n\t\tgetFilmHeight: function () {\n\n\t\t\t// film not completely covered in landscape format (aspect > 1)\n\t\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t\t},\n\n\t\t/**\n\t\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t\t * multi-monitor/multi-machine setups.\n\t\t *\n\t\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t\t * the monitors are in grid like this\n\t\t *\n\t\t *   +---+---+---+\n\t\t *   | A | B | C |\n\t\t *   +---+---+---+\n\t\t *   | D | E | F |\n\t\t *   +---+---+---+\n\t\t *\n\t\t * then for each monitor you would call it like this\n\t\t *\n\t\t *   var w = 1920;\n\t\t *   var h = 1080;\n\t\t *   var fullWidth = w * 3;\n\t\t *   var fullHeight = h * 2;\n\t\t *\n\t\t *   --A--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t\t *   --B--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t\t *   --C--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t\t *   --D--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t\t *   --E--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t\t *   --F--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t\t *\n\t\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t\t */\n\t\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\t\tthis.view = {\n\t\t\t\tfullWidth: fullWidth,\n\t\t\t\tfullHeight: fullHeight,\n\t\t\t\toffsetX: x,\n\t\t\t\toffsetY: y,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tclearViewOffset: function () {\n\n\t\t\tthis.view = null;\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tupdateProjectionMatrix: function () {\n\n\t\t\tvar near = this.near,\n\t\t\t\ttop = near * Math.tan(\n\t\t\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\t\theight = 2 * top,\n\t\t\t\twidth = this.aspect * height,\n\t\t\t\tleft = - 0.5 * width,\n\t\t\t\tview = this.view;\n\n\t\t\tif ( view !== null ) {\n\n\t\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\t\twidth *= view.width / fullWidth;\n\t\t\t\theight *= view.height / fullHeight;\n\n\t\t\t}\n\n\t\t\tvar skew = this.filmOffset;\n\t\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.fov = this.fov;\n\t\t\tdata.object.zoom = this.zoom;\n\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\t\t\tdata.object.focus = this.focus;\n\n\t\t\tdata.object.aspect = this.aspect;\n\n\t\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\t\tdata.object.filmGauge = this.filmGauge;\n\t\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n\t}\n\n\tObject.assign( Face3.prototype, {\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.a = source.a;\n\t\t\tthis.b = source.b;\n\t\t\tthis.c = source.c;\n\n\t\t\tthis.normal.copy( source.normal );\n\t\t\tthis.color.copy( source.color );\n\n\t\t\tthis.materialIndex = source.materialIndex;\n\n\t\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author kile / http://kile.stravaganza.org/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author bhouston / http://clara.io\n\t */\n\n\tvar count = 0;\n\tfunction GeometryIdCount() { return count++; }\n\n\tfunction Geometry() {\n\n\t\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\t\tthis.uuid = _Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Geometry';\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\tthis.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = false;\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.lineDistancesNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t}\n\n\tObject.assign( Geometry.prototype, EventDispatcher.prototype, {\n\n\t\tisGeometry: true,\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\t\tvar vertex = this.vertices[ i ];\n\t\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\t\tvar face = this.faces[ i ];\n\t\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tthis.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tthis.computeBoundingSphere();\n\n\t\t\t}\n\n\t\t\tthis.verticesNeedUpdate = true;\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateX: function () {\n\n\t\t\t// rotate geometry around world x-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\tm1.makeRotationX( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\t// rotate geometry around world y-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\tm1.makeRotationY( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\t// rotate geometry around world z-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\tm1.makeRotationZ( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function () {\n\n\t\t\t// translate geometry\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function translate( x, y, z ) {\n\n\t\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tscale: function () {\n\n\t\t\t// scale geometry\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function scale( x, y, z ) {\n\n\t\t\t\tm1.makeScale( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\tvar obj = new Object3D();\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tobj.lookAt( vector );\n\n\t\t\t\tobj.updateMatrix();\n\n\t\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tfromBufferGeometry: function ( geometry ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\t\tvar attributes = geometry.attributes;\n\n\t\t\tvar positions = attributes.position.array;\n\t\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\t\tvar tempNormals = [];\n\t\t\tvar tempUVs = [];\n\t\t\tvar tempUVs2 = [];\n\n\t\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\t\tscope.faces.push( face );\n\n\t\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar groups = geometry.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\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\tif ( indices !== undefined ) {\n\n\t\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcenter: function () {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn offset;\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t\tvar center = this.boundingSphere.center;\n\t\t\tvar radius = this.boundingSphere.radius;\n\n\t\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\t\tvar matrix = new Matrix4();\n\t\t\tmatrix.set(\n\t\t\t\ts, 0, 0, - s * center.x,\n\t\t\t\t0, s, 0, - s * center.y,\n\t\t\t\t0, 0, s, - s * center.z,\n\t\t\t\t0, 0, 0, 1\n\t\t\t);\n\n\t\t\tthis.applyMatrix( matrix );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcomputeFaceNormals: function () {\n\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tvar face = this.faces[ f ];\n\n\t\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tcb.normalize();\n\n\t\t\t\tface.normal.copy( cb );\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\t\tvar v, vl, f, fl, face, vertices;\n\n\t\t\tvertices = new Array( this.vertices.length );\n\n\t\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\t\tvertices[ v ] = new Vector3();\n\n\t\t\t}\n\n\t\t\tif ( areaWeighted ) {\n\n\t\t\t\t// vertex normals weighted by triangle areas\n\t\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\t\tvar vA, vB, vC;\n\t\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.computeFaceNormals();\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\t\tvertices[ v ].normalize();\n\n\t\t\t}\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.faces.length > 0 ) {\n\n\t\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeFlatVertexNormals: function () {\n\n\t\t\tvar f, fl, face;\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.faces.length > 0 ) {\n\n\t\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeMorphNormals: function () {\n\n\t\t\tvar i, il, f, fl, face;\n\n\t\t\t// save original normals\n\t\t\t// - create temp variables on first access\n\t\t\t//   otherwise just copy (for faster repeated calls)\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\t\tvar tmpGeo = new Geometry();\n\t\t\ttmpGeo.faces = this.faces;\n\n\t\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t\t// create on first access\n\n\t\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t\t// set vertices to morph target\n\n\t\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t\t// compute morph normals\n\n\t\t\t\ttmpGeo.computeFaceNormals();\n\t\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t\t// store morph normals\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restore original normals\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeLineDistances: function () {\n\n\t\t\tvar d = 0;\n\t\t\tvar vertices = this.vertices;\n\n\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\tif ( i > 0 ) {\n\n\t\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeBoundingBox: function () {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new Box3();\n\n\t\t\t}\n\n\t\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t\t},\n\n\t\tcomputeBoundingSphere: function () {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t\t},\n\n\t\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar normalMatrix,\n\t\t\t\tvertexOffset = this.vertices.length,\n\t\t\t\tvertices1 = this.vertices,\n\t\t\t\tvertices2 = geometry.vertices,\n\t\t\t\tfaces1 = this.faces,\n\t\t\t\tfaces2 = geometry.faces,\n\t\t\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\t\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\t\t\tcolors1 = this.colors,\n\t\t\t\tcolors2 = geometry.colors;\n\n\t\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\t\tif ( matrix !== undefined ) {\n\n\t\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\t}\n\n\t\t\t// vertices\n\n\t\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\t\tvertices1.push( vertexCopy );\n\n\t\t\t}\n\n\t\t\t// colors\n\n\t\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// faces\n\n\t\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\t\tfaces1.push( faceCopy );\n\n\t\t\t}\n\n\t\t\t// uvs\n\n\t\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\t\tif ( uv === undefined ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tuvs1.push( uvCopy );\n\n\t\t\t}\n\n\t\t},\n\n\t\tmergeMesh: function ( mesh ) {\n\n\t\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t\t},\n\n\t\t/*\n\t\t * Checks for duplicate vertices with hashmap.\n\t\t * Duplicated vertices are removed\n\t\t * and faces' vertices are updated.\n\t\t */\n\n\t\tmergeVertices: function () {\n\n\t\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\t\tvar unique = [], changes = [];\n\n\t\t\tvar v, key;\n\t\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\t\tvar i, il, face;\n\t\t\tvar indices, j, jl;\n\n\t\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\t\tv = this.vertices[ i ];\n\t\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// if faces are completely degenerate after merging vertices, we\n\t\t\t// have to remove them from the geometry.\n\t\t\tvar faceIndicesToRemove = [];\n\n\t\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\t\tface = this.faces[ i ];\n\n\t\t\t\tface.a = changes[ face.a ];\n\t\t\t\tface.b = changes[ face.b ];\n\t\t\t\tface.c = changes[ face.c ];\n\n\t\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t\t// we have to remove the face as nothing can be saved\n\t\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\t\tfaceIndicesToRemove.push( i );\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\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Use unique set of vertices\n\n\t\t\tvar diff = this.vertices.length - unique.length;\n\t\t\tthis.vertices = unique;\n\t\t\treturn diff;\n\n\t\t},\n\n\t\tsortFacesByMaterialIndex: function () {\n\n\t\t\tvar faces = this.faces;\n\t\t\tvar length = faces.length;\n\n\t\t\t// tag faces\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tfaces[ i ]._id = i;\n\n\t\t\t}\n\n\t\t\t// sort faces\n\n\t\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t\t}\n\n\t\t\tfaces.sort( materialIndexSort );\n\n\t\t\t// sort uvs\n\n\t\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\t\tvar newUvs1, newUvs2;\n\n\t\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tvar id = faces[ i ]._id;\n\n\t\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t\t}\n\n\t\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'Geometry',\n\t\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard Geometry serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.parameters !== undefined ) {\n\n\t\t\t\tvar parameters = this.parameters;\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\n\t\t\t}\n\n\t\t\tvar vertices = [];\n\n\t\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\t\tvar vertex = this.vertices[ i ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t\tvar faces = [];\n\t\t\tvar normals = [];\n\t\t\tvar normalsHash = {};\n\t\t\tvar colors = [];\n\t\t\tvar colorsHash = {};\n\t\t\tvar uvs = [];\n\t\t\tvar uvsHash = {};\n\n\t\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\t\tvar face = this.faces[ i ];\n\n\t\t\t\tvar hasMaterial = true;\n\t\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\t\tvar faceType = 0;\n\n\t\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\t\tfaces.push( faceType );\n\t\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\t\tfaces.push( face.materialIndex );\n\n\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t\t}\n\n\t\t\tfunction getNormalIndex( normal ) {\n\n\t\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tfunction getColorIndex( color ) {\n\n\t\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\t\tcolors.push( color.getHex() );\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tfunction getUvIndex( uv ) {\n\n\t\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tdata.data = {};\n\n\t\t\tdata.data.vertices = vertices;\n\t\t\tdata.data.normals = normals;\n\t\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\t\tdata.data.faces = faces;\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\t/*\n\t\t\t // Handle primitives\n\n\t\t\t var parameters = this.parameters;\n\n\t\t\t if ( parameters !== undefined ) {\n\n\t\t\t var values = [];\n\n\t\t\t for ( var key in parameters ) {\n\n\t\t\t values.push( parameters[ key ] );\n\n\t\t\t }\n\n\t\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t\t this.constructor.apply( geometry, values );\n\t\t\t return geometry;\n\n\t\t\t }\n\n\t\t\t return new this.constructor().copy( this );\n\t\t\t */\n\n\t\t\treturn new Geometry().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tvar i, il, j, jl, k, kl;\n\n\t\t\t// reset\n\n\t\t\tthis.vertices = [];\n\t\t\tthis.colors = [];\n\t\t\tthis.faces = [];\n\t\t\tthis.faceVertexUvs = [[]];\n\t\t\tthis.morphTargets = [];\n\t\t\tthis.morphNormals = [];\n\t\t\tthis.skinWeights = [];\n\t\t\tthis.skinIndices = [];\n\t\t\tthis.lineDistances = [];\n\t\t\tthis.boundingBox = null;\n\t\t\tthis.boundingSphere = null;\n\n\t\t\t// name\n\n\t\t\tthis.name = source.name;\n\n\t\t\t// vertices\n\n\t\t\tvar vertices = source.vertices;\n\n\t\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// colors\n\n\t\t\tvar colors = source.colors;\n\n\t\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// faces\n\n\t\t\tvar faces = source.faces;\n\n\t\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// face vertex uvs\n\n\t\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morph targets\n\n\t\t\tvar morphTargets = source.morphTargets;\n\n\t\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\t\tvar morphTarget = {};\n\t\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t\t// vertices\n\n\t\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// normals\n\n\t\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t\t// morph normals\n\n\t\t\tvar morphNormals = source.morphNormals;\n\n\t\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\t\tvar morphNormal = {};\n\n\t\t\t\t// vertex normals\n\n\t\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// face normals\n\n\t\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t\t}\n\n\t\t\t// skin weights\n\n\t\t\tvar skinWeights = source.skinWeights;\n\n\t\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// skin indices\n\n\t\t\tvar skinIndices = source.skinIndices;\n\n\t\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t\t}\n\n\t\t\t// line distances\n\n\t\t\tvar lineDistances = source.lineDistances;\n\n\t\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t\t}\n\n\t\t\t// bounding box\n\n\t\t\tvar boundingBox = source.boundingBox;\n\n\t\t\tif ( boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t\t}\n\n\t\t\t// bounding sphere\n\n\t\t\tvar boundingSphere = source.boundingSphere;\n\n\t\t\tif ( boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\t// update flags\n\n\t\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction BufferAttribute( 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.uuid = _Math.generateUUID();\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.dynamic = false;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.onUploadCallback = function () {};\n\n\t\tthis.version = 0;\n\n\t}\n\n\tObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\t\tset: function ( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( BufferAttribute.prototype, {\n\n\t\tisBufferAttribute: true,\n\n\t\tsetArray: function ( array ) {\n\n\t\t\tif ( Array.isArray( array ) ) {\n\n\t\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t\t}\n\n\t\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\t\tthis.array = array;\n\n\t\t},\n\n\t\tsetDynamic: function ( value ) {\n\n\t\t\tthis.dynamic = value;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.array = new source.array.constructor( source.array );\n\t\t\tthis.itemSize = source.itemSize;\n\t\t\tthis.count = source.count;\n\t\t\tthis.normalized = source.normalized;\n\n\t\t\tthis.dynamic = source.dynamic;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\t\tindex1 *= this.itemSize;\n\t\t\tindex2 *= attribute.itemSize;\n\n\t\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyArray: function ( array ) {\n\n\t\t\tthis.array.set( array );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyColorsArray: function ( colors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\t\tvar color = colors[ i ];\n\n\t\t\t\tif ( color === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\t\tcolor = new Color();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = color.r;\n\t\t\t\tarray[ offset ++ ] = color.g;\n\t\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyIndicesArray: function ( indices ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tvar index = indices[ i ];\n\n\t\t\t\tarray[ offset ++ ] = index.a;\n\t\t\t\tarray[ offset ++ ] = index.b;\n\t\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector2sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new Vector2();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector3sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new Vector3();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector4sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new Vector4();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tset: function ( value, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.array.set( value, offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetX: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize ];\n\n\t\t},\n\n\t\tsetX: function ( index, x ) {\n\n\t\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetY: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t\t},\n\n\t\tsetY: function ( index, y ) {\n\n\t\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetZ: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t\t},\n\n\t\tsetZ: function ( index, z ) {\n\n\t\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetW: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t\t},\n\n\t\tsetW: function ( index, w ) {\n\n\t\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXY: function ( index, x, y ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZ: function ( index, x, y, z ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\t\t\tthis.array[ index + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\t\t\tthis.array[ index + 2 ] = z;\n\t\t\tthis.array[ index + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tonUpload: function ( callback ) {\n\n\t\t\tthis.onUploadCallback = callback;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t//\n\n\tfunction Int8BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Int8Array( array ), itemSize );\n\n\t}\n\n\tInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\n\tfunction Uint8BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Uint8Array( array ), itemSize );\n\n\t}\n\n\tUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\n\tfunction Uint8ClampedBufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize );\n\n\t}\n\n\tUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\n\tfunction Int16BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Int16Array( array ), itemSize );\n\n\t}\n\n\tInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\n\tfunction Uint16BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Uint16Array( array ), itemSize );\n\n\t}\n\n\tUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\n\tfunction Int32BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Int32Array( array ), itemSize );\n\n\t}\n\n\tInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\n\tfunction Uint32BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Uint32Array( array ), itemSize );\n\n\t}\n\n\tUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\n\tfunction Float32BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Float32Array( array ), itemSize );\n\n\t}\n\n\tFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\n\tfunction Float64BufferAttribute( array, itemSize ) {\n\n\t\tBufferAttribute.call( this, new Float64Array( array ), itemSize );\n\n\t}\n\n\tFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\n\tFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction DirectGeometry() {\n\n\t\tthis.indices = [];\n\t\tthis.vertices = [];\n\t\tthis.normals = [];\n\t\tthis.colors = [];\n\t\tthis.uvs = [];\n\t\tthis.uvs2 = [];\n\n\t\tthis.groups = [];\n\n\t\tthis.morphTargets = {};\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\t// this.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t}\n\n\tObject.assign( DirectGeometry.prototype, {\n\n\t\tcomputeGroups: function ( geometry ) {\n\n\t\t\tvar group;\n\t\t\tvar groups = [];\n\t\t\tvar materialIndex = undefined;\n\n\t\t\tvar faces = geometry.faces;\n\n\t\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\t// materials\n\n\t\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgroup = {\n\t\t\t\t\t\tstart: i * 3,\n\t\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( group !== undefined ) {\n\n\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\tgroups.push( group );\n\n\t\t\t}\n\n\t\t\tthis.groups = groups;\n\n\t\t},\n\n\t\tfromGeometry: function ( geometry ) {\n\n\t\t\tvar faces = geometry.faces;\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t\t// morphs\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\t\tvar morphTargetsPosition;\n\n\t\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\t\tmorphTargetsPosition = [];\n\n\t\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t\t}\n\n\t\t\tvar morphNormals = geometry.morphNormals;\n\t\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\t\tvar morphTargetsNormal;\n\n\t\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\t\tmorphTargetsNormal = [];\n\n\t\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tvar skinIndices = geometry.skinIndices;\n\t\t\tvar skinWeights = geometry.skinWeights;\n\n\t\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t\t//\n\n\t\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar normal = face.normal;\n\n\t\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t\t}\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = face.color;\n\n\t\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// morphs\n\n\t\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t\t}\n\n\t\t\t\t// skins\n\n\t\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.computeGroups( geometry );\n\n\t\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction arrayMax( array ) {\n\n\t\tif ( array.length === 0 ) return - Infinity;\n\n\t\tvar max = array[ 0 ];\n\n\t\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t\t}\n\n\t\treturn max;\n\n\t}\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction BufferGeometry() {\n\n\t\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\t\tthis.uuid = _Math.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\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}\n\n\tBufferGeometry.MaxIndex = 65535;\n\n\tObject.assign( BufferGeometry.prototype, EventDispatcher.prototype, {\n\n\t\tisBufferGeometry: true,\n\n\t\tgetIndex: function () {\n\n\t\t\treturn this.index;\n\n\t\t},\n\n\t\tsetIndex: function ( index ) {\n\n\t\t\tif ( Array.isArray( index ) ) {\n\n\t\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tthis.index = index;\n\n\t\t\t}\n\n\t\t},\n\n\t\taddAttribute: function ( name, attribute ) {\n\n\t\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\t\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( name === 'index' ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\t\tthis.setIndex( attribute );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.attributes[ name ] = attribute;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetAttribute: function ( name ) {\n\n\t\t\treturn this.attributes[ name ];\n\n\t\t},\n\n\t\tremoveAttribute: function ( name ) {\n\n\t\t\tdelete this.attributes[ name ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddGroup: function ( start, count, materialIndex ) {\n\n\t\t\tthis.groups.push( {\n\n\t\t\t\tstart: start,\n\t\t\t\tcount: count,\n\t\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t\t} );\n\n\t\t},\n\n\t\tclearGroups: function () {\n\n\t\t\tthis.groups = [];\n\n\t\t},\n\n\t\tsetDrawRange: function ( start, count ) {\n\n\t\t\tthis.drawRange.start = start;\n\t\t\tthis.drawRange.count = count;\n\n\t\t},\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tvar position = this.attributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\t\tposition.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tvar normal = this.attributes.normal;\n\n\t\t\tif ( normal !== undefined ) {\n\n\t\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\t\tnormal.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tthis.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tthis.computeBoundingSphere();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateX: function () {\n\n\t\t\t// rotate geometry around world x-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\tm1.makeRotationX( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\t// rotate geometry around world y-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\tm1.makeRotationY( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\t// rotate geometry around world z-axis\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\tm1.makeRotationZ( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function () {\n\n\t\t\t// translate geometry\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function translate( x, y, z ) {\n\n\t\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tscale: function () {\n\n\t\t\t// scale geometry\n\n\t\t\tvar m1 = new Matrix4();\n\n\t\t\treturn function scale( x, y, z ) {\n\n\t\t\t\tm1.makeScale( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\tvar obj = new Object3D();\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tobj.lookAt( vector );\n\n\t\t\t\tobj.updateMatrix();\n\n\t\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcenter: function () {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn offset;\n\n\t\t},\n\n\t\tsetFromObject: function ( object ) {\n\n\t\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh ) {\n\n\t\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tupdateFromObject: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\t\tdirect = undefined;\n\t\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t\t}\n\n\t\t\t\tif ( direct === undefined ) {\n\n\t\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t\t}\n\n\t\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\t\tgeometry = direct;\n\n\t\t\t}\n\n\t\t\tvar attribute;\n\n\t\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\t\tattribute = this.attributes.position;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\t\tattribute = this.attributes.normal;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\t\tattribute = this.attributes.color;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\t\tattribute = this.attributes.uv;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\t\tthis.groups = geometry.groups;\n\n\t\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tfromGeometry: function ( geometry ) {\n\n\t\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t\t},\n\n\t\tfromDirectGeometry: function ( geometry ) {\n\n\t\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\t\tvar TypeArray = arrayMax( geometry.indices ) > 65535 ? Uint32Array : Uint16Array;\n\t\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\t\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t\t}\n\n\t\t\t// groups\n\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\t// morphs\n\n\t\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\t\tvar array = [];\n\t\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.length * 3, 3 );\n\n\t\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t\t}\n\n\t\t\t// skinning\n\n\t\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcomputeBoundingBox: function () {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new Box3();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t} else {\n\n\t\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t\t}\n\n\t\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\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\t}\n\n\t\t},\n\n\t\tcomputeBoundingSphere: function () {\n\n\t\t\tvar box = new Box3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\treturn function computeBoundingSphere() {\n\n\t\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t\t}\n\n\t\t\t\tvar position = this.attributes.position;\n\n\t\t\t\tif ( position ) {\n\n\t\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\t\tbox.setFromBufferAttribute( position );\n\t\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\t\tvector.x = position.getX( i );\n\t\t\t\t\t\tvector.y = position.getY( i );\n\t\t\t\t\t\tvector.z = position.getZ( i );\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\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\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcomputeFaceNormals: function () {\n\n\t\t\t// backwards compatibility\n\n\t\t},\n\n\t\tcomputeVertexNormals: function () {\n\n\t\t\tvar index = this.index;\n\t\t\tvar attributes = this.attributes;\n\t\t\tvar groups = this.groups;\n\n\t\t\tif ( attributes.position ) {\n\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// reset existing normals to zero\n\n\t\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar normals = attributes.normal.array;\n\n\t\t\t\tvar vA, vB, vC;\n\t\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t\t// indexed elements\n\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\t\tvar start = group.start;\n\t\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\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// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.normalizeNormals();\n\n\t\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t\t}\n\n\t\t},\n\n\t\tmerge: function ( geometry, offset ) {\n\n\t\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\t\tvar attribute1 = attributes[ key ];\n\t\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnormalizeNormals: function () {\n\n\t\t\tvar vector = new Vector3();\n\n\t\t\treturn function normalizeNormals() {\n\n\t\t\t\tvar normals = this.attributes.normal;\n\n\t\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\t\tvector.normalize();\n\n\t\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttoNonIndexed: function () {\n\n\t\t\tif ( this.index === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar geometry2 = new BufferGeometry();\n\n\t\t\tvar indices = this.index.array;\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ name ];\n\n\t\t\t\tvar array = attribute.array;\n\t\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\t\tvar index = 0, index2 = 0;\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t\t}\n\n\t\t\treturn geometry2;\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.5,\n\t\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard BufferGeometry serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.parameters !== undefined ) {\n\n\t\t\t\tvar parameters = this.parameters;\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\n\t\t\t}\n\n\t\t\tdata.data = { attributes: {} };\n\n\t\t\tvar index = this.index;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\t\tdata.data.index = {\n\t\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\t\tarray: array\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ key ];\n\n\t\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\t\tarray: array,\n\t\t\t\t\tnormalized: attribute.normalized\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar groups = this.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t\t}\n\n\t\t\tvar boundingSphere = this.boundingSphere;\n\n\t\t\tif ( boundingSphere !== null ) {\n\n\t\t\t\tdata.data.boundingSphere = {\n\t\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\t\tradius: boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\t/*\n\t\t\t // Handle primitives\n\n\t\t\t var parameters = this.parameters;\n\n\t\t\t if ( parameters !== undefined ) {\n\n\t\t\t var values = [];\n\n\t\t\t for ( var key in parameters ) {\n\n\t\t\t values.push( parameters[ key ] );\n\n\t\t\t }\n\n\t\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t\t this.constructor.apply( geometry, values );\n\t\t\t return geometry;\n\n\t\t\t }\n\n\t\t\t return new this.constructor().copy( this );\n\t\t\t */\n\n\t\t\treturn new BufferGeometry().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tvar name, i, l;\n\n\t\t\t// reset\n\n\t\t\tthis.index = null;\n\t\t\tthis.attributes = {};\n\t\t\tthis.morphAttributes = {};\n\t\t\tthis.groups = [];\n\t\t\tthis.boundingBox = null;\n\t\t\tthis.boundingSphere = null;\n\n\t\t\t// name\n\n\t\t\tthis.name = source.name;\n\n\t\t\t// index\n\n\t\t\tvar index = source.index;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tthis.setIndex( index.clone() );\n\n\t\t\t}\n\n\t\t\t// attributes\n\n\t\t\tvar attributes = source.attributes;\n\n\t\t\tfor ( name in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ name ];\n\t\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t\t}\n\n\t\t\t// morph attributes\n\n\t\t\tvar morphAttributes = source.morphAttributes;\n\n\t\t\tfor ( name in morphAttributes ) {\n\n\t\t\t\tvar array = [];\n\t\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t\t}\n\n\t\t\t// groups\n\n\t\t\tvar groups = source.groups;\n\n\t\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\t\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t\t// bounding box\n\n\t\t\tvar boundingBox = source.boundingBox;\n\n\t\t\tif ( boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t\t}\n\n\t\t\t// bounding sphere\n\n\t\t\tvar boundingSphere = source.boundingSphere;\n\n\t\t\tif ( boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\t// draw range\n\n\t\t\tthis.drawRange.start = source.drawRange.start;\n\t\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// BoxGeometry\n\n\tfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tGeometry.call( this );\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tBoxGeometry.prototype = Object.create( Geometry.prototype );\n\tBoxGeometry.prototype.constructor = BoxGeometry;\n\n\t// BoxBufferGeometry\n\n\tfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tvar scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar numberOfVertices = 0;\n\t\tvar groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height,   width,  depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x',   1, - 1, depth, height, - width,  depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y',   1,   1, width, depth,    height, widthSegments, depthSegments,  2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y',   1, - 1, width, depth,  - height, widthSegments, depthSegments,  3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z',   1, - 1, width, height,   depth,  widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth,  widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tvar segmentWidth = width / gridX;\n\t\t\tvar segmentHeight = height / gridY;\n\n\t\t\tvar widthHalf = width / 2;\n\t\t\tvar heightHalf = height / 2;\n\t\t\tvar depthHalf = depth / 2;\n\n\t\t\tvar gridX1 = gridX + 1;\n\t\t\tvar gridY1 = gridY + 1;\n\n\t\t\tvar vertexCounter = 0;\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar ix, iy;\n\n\t\t\tvar vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// PlaneGeometry\n\n\tfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\t\tGeometry.call( this );\n\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\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tPlaneGeometry.prototype = Object.create( Geometry.prototype );\n\tPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n\t// PlaneBufferGeometry\n\n\tfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'PlaneBufferGeometry';\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\tvar width_half = width / 2;\n\t\tvar height_half = height / 2;\n\n\t\tvar gridX = Math.floor( widthSegments ) || 1;\n\t\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar segment_width = width / gridX;\n\t\tvar segment_height = height / gridY;\n\n\t\tvar ix, iy;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segment_height - height_half;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar 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\t// indices\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = ix + gridX1 * iy;\n\t\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  depthTest: <bool>,\n\t *  depthWrite: <bool>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>\n\t * }\n\t */\n\n\tfunction MeshBasicMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.skinning = false;\n\t\tthis.morphTargets = false;\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshBasicMaterial.prototype = Object.create( Material.prototype );\n\tMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\n\tMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\n\tMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Ray( origin, direction ) {\n\n\t\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\t\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n\t}\n\n\tObject.assign( Ray.prototype, {\n\n\t\tset: function ( origin, direction ) {\n\n\t\t\tthis.origin.copy( origin );\n\t\t\tthis.direction.copy( direction );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( ray ) {\n\n\t\t\tthis.origin.copy( ray.origin );\n\t\t\tthis.direction.copy( ray.direction );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tat: function ( t, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t\t},\n\n\t\tlookAt: function ( v ) {\n\n\t\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trecast: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function recast( t ) {\n\n\t\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\tresult.subVectors( point, this.origin );\n\t\t\tvar directionDistance = result.dot( this.direction );\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn result.copy( this.origin );\n\n\t\t\t}\n\n\t\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t\t},\n\n\t\tdistanceSqToPoint: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t\t// point behind the ray\n\n\t\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t\t}\n\n\t\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\t\treturn v1.distanceToSquared( point );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tdistanceSqToSegment: function () {\n\n\t\t\tvar segCenter = new Vector3();\n\t\t\tvar segDir = new Vector3();\n\t\t\tvar diff = new Vector3();\n\n\t\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t\t// defined by v0 and v1\n\t\t\t\t// It can also set two optional targets :\n\t\t\t\t// - The closest point on the ray\n\t\t\t\t// - The closest point on the segment\n\n\t\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\t\tvar c = diff.lengthSq();\n\t\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\t\tif ( det > 0 ) {\n\n\t\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\t\textDet = segExtent * det;\n\n\t\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\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\t\t} else {\n\n\t\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\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\t// region 5\n\n\t\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\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// Ray and segment are parallel.\n\n\t\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : 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\tif ( optionalPointOnRay ) {\n\n\t\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t\t}\n\n\t\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t\t}\n\n\t\t\t\treturn sqrDist;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectSphere: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\t\tvar tca = v1.dot( this.direction );\n\t\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\t\tvar t0 = tca - thc;\n\n\t\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\t\tvar t1 = tca + thc;\n\n\t\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t\t// test to see if t0 is behind the ray:\n\t\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t\t},\n\n\t\tdistanceToPlane: function ( plane ) {\n\n\t\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\t\treturn 0;\n\n\t\t\t\t}\n\n\t\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t\t// Return if the ray never intersects the plane\n\n\t\t\treturn t >= 0 ? t :  null;\n\n\t\t},\n\n\t\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\t\tvar t = this.distanceToPlane( plane );\n\n\t\t\tif ( t === null ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\treturn this.at( t, optionalTarget );\n\n\t\t},\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\t// check if the ray lies on the plane first\n\n\t\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\t\tif ( distToPoint === 0 ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\t\treturn false;\n\n\t\t},\n\n\t\tintersectBox: function ( box, optionalTarget ) {\n\n\t\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\t\tvar invdirx = 1 / this.direction.x,\n\t\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\t\tvar origin = this.origin;\n\n\t\t\tif ( invdirx >= 0 ) {\n\n\t\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t\t} else {\n\n\t\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t\t}\n\n\t\t\tif ( invdiry >= 0 ) {\n\n\t\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t\t} else {\n\n\t\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t\t}\n\n\t\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\t\tif ( invdirz >= 0 ) {\n\n\t\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t\t} else {\n\n\t\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t\t}\n\n\t\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t\t//return point closest to the ray (positive side)\n\n\t\t\tif ( tmax < 0 ) return null;\n\n\t\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t\t},\n\n\t\tintersectsBox: ( function () {\n\n\t\t\tvar v = new Vector3();\n\n\t\t\treturn function intersectsBox( box ) {\n\n\t\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tintersectTriangle: function () {\n\n\t\t\t// Compute the offset origin, edges, and normal.\n\t\t\tvar diff = new Vector3();\n\t\t\tvar edge1 = new Vector3();\n\t\t\tvar edge2 = new Vector3();\n\t\t\tvar normal = new Vector3();\n\n\t\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\t\tedge1.subVectors( b, a );\n\t\t\t\tedge2.subVectors( c, a );\n\t\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\t\tvar sign;\n\n\t\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\t\tsign = 1;\n\n\t\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\t\tsign = - 1;\n\t\t\t\t\tDdN = - DdN;\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\tdiff.subVectors( this.origin, a );\n\t\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t\t// b1 < 0, no intersection\n\t\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t\t// b2 < 0, no intersection\n\t\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// b1+b2 > 1, no intersection\n\t\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// Line intersects triangle, check if ray does.\n\t\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t\t// t < 0, no intersection\n\t\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// Ray intersects triangle.\n\t\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyMatrix4: function ( matrix4 ) {\n\n\t\t\tthis.origin.applyMatrix4( matrix4 );\n\t\t\tthis.direction.transformDirection( matrix4 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( ray ) {\n\n\t\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tfunction Line3( start, end ) {\n\n\t\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\t\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n\t}\n\n\tObject.assign( Line3.prototype, {\n\n\t\tset: function ( start, end ) {\n\n\t\t\tthis.start.copy( start );\n\t\t\tthis.end.copy( end );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( line ) {\n\n\t\t\tthis.start.copy( line.start );\n\t\t\tthis.end.copy( line.end );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetCenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tdelta: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn result.subVectors( this.end, this.start );\n\n\t\t},\n\n\t\tdistanceSq: function () {\n\n\t\t\treturn this.start.distanceToSquared( this.end );\n\n\t\t},\n\n\t\tdistance: function () {\n\n\t\t\treturn this.start.distanceTo( this.end );\n\n\t\t},\n\n\t\tat: function ( t, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t\t},\n\n\t\tclosestPointToPointParameter: function () {\n\n\t\t\tvar startP = new Vector3();\n\t\t\tvar startEnd = new Vector3();\n\n\t\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\t\tstartP.subVectors( point, this.start );\n\t\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\t\tif ( clampToLine ) {\n\n\t\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t\t}\n\n\t\t\t\treturn t;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t\t},\n\n\t\tapplyMatrix4: function ( matrix ) {\n\n\t\t\tthis.start.applyMatrix4( matrix );\n\t\t\tthis.end.applyMatrix4( matrix );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( line ) {\n\n\t\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Triangle( a, b, c ) {\n\n\t\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\t\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\t\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n\t}\n\n\tObject.assign( Triangle, {\n\n\t\tnormal: function () {\n\n\t\t\tvar v0 = new Vector3();\n\n\t\t\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\tresult.subVectors( c, b );\n\t\t\t\tv0.subVectors( a, b );\n\t\t\t\tresult.cross( v0 );\n\n\t\t\t\tvar resultLengthSq = result.lengthSq();\n\t\t\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn result.set( 0, 0, 0 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\t// static/instance method to calculate barycentric coordinates\n\t\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\t\tbarycoordFromPoint: function () {\n\n\t\t\tvar v0 = new Vector3();\n\t\t\tvar v1 = new Vector3();\n\t\t\tvar v2 = new Vector3();\n\n\t\t\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\t\t\tv0.subVectors( c, a );\n\t\t\t\tv1.subVectors( b, a );\n\t\t\t\tv2.subVectors( point, a );\n\n\t\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\t\t// collinear or singular triangle\n\t\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t\t\t}\n\n\t\t\t\tvar invDenom = 1 / denom;\n\t\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t\t// barycentric coordinates must always sum to 1\n\t\t\t\treturn result.set( 1 - u - v, v, u );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcontainsPoint: function () {\n\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\t\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\t\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t\t\t};\n\n\t\t}()\n\n\t} );\n\n\tObject.assign( Triangle.prototype, {\n\n\t\tset: function ( a, b, c ) {\n\n\t\t\tthis.a.copy( a );\n\t\t\tthis.b.copy( b );\n\t\t\tthis.c.copy( c );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\t\tthis.a.copy( points[ i0 ] );\n\t\t\tthis.b.copy( points[ i1 ] );\n\t\t\tthis.c.copy( points[ i2 ] );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( triangle ) {\n\n\t\t\tthis.a.copy( triangle.a );\n\t\t\tthis.b.copy( triangle.b );\n\t\t\tthis.c.copy( triangle.c );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tarea: function () {\n\n\t\t\tvar v0 = new Vector3();\n\t\t\tvar v1 = new Vector3();\n\n\t\t\treturn function area() {\n\n\t\t\t\tv0.subVectors( this.c, this.b );\n\t\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmidpoint: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t\t},\n\n\t\tnormal: function ( optionalTarget ) {\n\n\t\t\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t\t},\n\n\t\tplane: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Plane();\n\n\t\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t\t},\n\n\t\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\t\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t\t},\n\n\t\tclosestPointToPoint: function () {\n\n\t\t\tvar plane = new Plane();\n\t\t\tvar edgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\t\tvar projectedPoint = new Vector3();\n\t\t\tvar closestPoint = new Vector3();\n\n\t\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\t\tvar minDistance = Infinity;\n\n\t\t\t\t// project the point onto the plane of the triangle\n\n\t\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t\t// check if the projection lies within the triangle\n\n\t\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t\t// if so, this is the closest point\n\n\t\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\t\tresult.copy( closestPoint );\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\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tequals: function ( triangle ) {\n\n\t\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author jonobr1 / http://jonobr1.com/\n\t */\n\n\tfunction Mesh( geometry, material ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\t\tthis.drawMode = TrianglesDrawMode;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Mesh,\n\n\t\tisMesh: true,\n\n\t\tsetDrawMode: function ( value ) {\n\n\t\t\tthis.drawMode = value;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source );\n\n\t\t\tthis.drawMode = source.drawMode;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tupdateMorphTargets: function () {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar m, ml, name;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\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\tvar morphTargets = geometry.morphTargets;\n\n\t\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphTargets[ 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},\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new Matrix4();\n\t\t\tvar ray = new Ray();\n\t\t\tvar sphere = new Sphere();\n\n\t\t\tvar vA = new Vector3();\n\t\t\tvar vB = new Vector3();\n\t\t\tvar vC = new Vector3();\n\n\t\t\tvar tempA = new Vector3();\n\t\t\tvar tempB = new Vector3();\n\t\t\tvar tempC = new Vector3();\n\n\t\t\tvar uvA = new Vector2();\n\t\t\tvar uvB = new Vector2();\n\t\t\tvar uvC = new Vector2();\n\n\t\t\tvar barycoord = new Vector3();\n\n\t\t\tvar intersectionPoint = new Vector3();\n\t\t\tvar intersectionPointWorld = new Vector3();\n\n\t\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\t\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\t\treturn uv1.clone();\n\n\t\t\t}\n\n\t\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\t\tvar intersect;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t\t}\n\n\t\t\t\tif ( intersect === null ) return null;\n\n\t\t\t\tintersectionPointWorld.copy( point );\n\t\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\t\treturn {\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\t\tobject: object\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {\n\n\t\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\t\tvar intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uv ) {\n\n\t\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\n\t\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t\t}\n\n\t\t\t\treturn intersection;\n\n\t\t\t}\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar material = this.material;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t\tif ( material === undefined ) return;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\t// Check boundingBox before continuing\n\n\t\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t\t}\n\n\t\t\t\tvar intersection;\n\n\t\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar a, b, c;\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\t\tvar i, l;\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\t\tfor ( i = 0, l = index.count; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, 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( i / 3 ); // triangle number in indices buffer semantics\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} else {\n\n\t\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\t\tfor ( i = 0, l = position.count; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\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 if ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\t\tvar faces = geometry.faces;\n\t\t\t\t\tvar uvs;\n\n\t\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\t\tintersection.faceIndex = f;\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}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {\n\n\t\tvar clearColor = new Color( 0x000000 );\n\t\tvar clearAlpha = 0;\n\n\t\tvar planeCamera, planeMesh;\n\t\tvar boxMesh;\n\n\t\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\t\tvar background = scene.background;\n\n\t\t\tif ( background === null ) {\n\n\t\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t\t} else if ( background && background.isColor ) {\n\n\t\t\t\tsetClear( background, 1 );\n\t\t\t\tforceClear = true;\n\n\t\t\t}\n\n\t\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t\t}\n\n\t\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\t\tuniforms: ShaderLib.cube.uniforms,\n\t\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\t\tdepthTest: true,\n\t\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\t\tfog: false\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\t\tvar scale = camera.far;\n\n\t\t\t\t\t\tthis.matrixWorld.makeScale( scale, scale, scale );\n\t\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t\t\tthis.material.polygonOffsetUnits = scale * 10;\n\n\t\t\t\t\t};\n\n\t\t\t\t\tgeometries.update( boxMesh.geometry );\n\n\t\t\t\t}\n\n\t\t\t\tboxMesh.material.uniforms.tCube.value = background;\n\n\t\t\t\trenderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );\n\n\t\t\t} else if ( background && background.isTexture ) {\n\n\t\t\t\tif ( planeCamera === undefined ) {\n\n\t\t\t\t\tplaneCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\n\t\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t\t\t\t\t);\n\n\t\t\t\t\tgeometries.update( planeMesh.geometry );\n\n\t\t\t\t}\n\n\t\t\t\tplaneMesh.material.map = background;\n\n\t\t\t\t// TODO Push this to renderList\n\n\t\t\t\trenderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setClear( color, alpha ) {\n\n\t\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tgetClearColor: function () {\n\n\t\t\t\treturn clearColor;\n\n\t\t\t},\n\t\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\t\tclearColor.set( color );\n\t\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t\t},\n\t\t\tgetClearAlpha: function () {\n\n\t\t\t\treturn clearAlpha;\n\n\t\t\t},\n\t\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\t\tclearAlpha = alpha;\n\t\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t\t},\n\t\t\trender: render\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.program && b.program && a.program !== b.program ) {\n\n\t\t\treturn a.program.id - b.program.id;\n\n\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\treturn a.material.id - b.material.id;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn a.z - b.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction reversePainterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction WebGLRenderList() {\n\n\t\tvar renderItems = [];\n\t\tvar renderItemsIndex = 0;\n\n\t\tvar opaque = [];\n\t\tvar transparent = [];\n\n\t\tfunction init() {\n\n\t\t\trenderItemsIndex = 0;\n\n\t\t\topaque.length = 0;\n\t\t\ttransparent.length = 0;\n\n\t\t}\n\n\t\tfunction push( object, geometry, material, z, group ) {\n\n\t\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\t\tif ( renderItem === undefined ) {\n\n\t\t\t\trenderItem = {\n\t\t\t\t\tid: object.id,\n\t\t\t\t\tobject: object,\n\t\t\t\t\tgeometry: geometry,\n\t\t\t\t\tmaterial: material,\n\t\t\t\t\tprogram: material.program,\n\t\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\t\tz: z,\n\t\t\t\t\tgroup: group\n\t\t\t\t};\n\n\t\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t\t} else {\n\n\t\t\t\trenderItem.id = object.id;\n\t\t\t\trenderItem.object = object;\n\t\t\t\trenderItem.geometry = geometry;\n\t\t\t\trenderItem.material = material;\n\t\t\t\trenderItem.program = material.program;\n\t\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\t\trenderItem.z = z;\n\t\t\t\trenderItem.group = group;\n\n\t\t\t}\n\n\t\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t\t\trenderItemsIndex ++;\n\n\t\t}\n\n\t\tfunction sort() {\n\n\t\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t\t}\n\n\t\treturn {\n\t\t\topaque: opaque,\n\t\t\ttransparent: transparent,\n\n\t\t\tinit: init,\n\t\t\tpush: push,\n\n\t\t\tsort: sort\n\t\t};\n\n\t}\n\n\tfunction WebGLRenderLists() {\n\n\t\tvar lists = {};\n\n\t\tfunction get( scene, camera ) {\n\n\t\t\tvar hash = scene.id + ',' + camera.id;\n\t\t\tvar list = lists[ hash ];\n\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\t// console.log( 'THREE.WebGLRenderLists:', hash );\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists[ hash ] = list;\n\n\t\t\t}\n\n\t\t\treturn list;\n\n\t\t}\n\n\t\tfunction dispose() {\n\n\t\t\tlists = {};\n\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tdispose: dispose\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction absNumericalSort( a, b ) {\n\n\t\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n\t}\n\n\tfunction WebGLMorphtargets( gl ) {\n\n\t\tvar influencesList = {};\n\t\tvar morphInfluences = new Float32Array( 8 );\n\n\t\tfunction update( object, geometry, material, program ) {\n\n\t\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\t\tvar length = objectInfluences.length;\n\n\t\t\tvar influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( var 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\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t\t// Remove current morphAttributes\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tvar influence = influences[ i ];\n\n\t\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tvar 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\t// Add morphAttributes\n\n\t\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\t\tvar influence = influences[ i ];\n\n\t\t\t\tif ( influence ) {\n\n\t\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\t\tif ( value ) {\n\n\t\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tupdate: update\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\n\n\t\tvar mode;\n\n\t\tfunction setMode( value ) {\n\n\t\t\tmode = value;\n\n\t\t}\n\n\t\tvar type, bytesPerElement;\n\n\t\tfunction setIndex( value ) {\n\n\t\t\ttype = value.type;\n\t\t\tbytesPerElement = value.bytesPerElement;\n\n\t\t}\n\n\t\tfunction render( start, count ) {\n\n\t\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\t\tinfoRender.calls ++;\n\t\t\tinfoRender.vertices += count;\n\n\t\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\t\t\telse if ( mode === gl.POINTS ) infoRender.points += count;\n\n\t\t}\n\n\t\tfunction renderInstances( geometry, start, count ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\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\textension.drawElementsInstancedANGLE( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\t\tinfoRender.calls ++;\n\t\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\t\t\telse if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count;\n\n\t\t}\n\n\t\t//\n\n\t\tthis.setMode = setMode;\n\t\tthis.setIndex = setIndex;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\n\n\t\tvar mode;\n\n\t\tfunction setMode( value ) {\n\n\t\t\tmode = value;\n\n\t\t}\n\n\t\tfunction render( start, count ) {\n\n\t\t\tgl.drawArrays( mode, start, count );\n\n\t\t\tinfoRender.calls ++;\n\t\t\tinfoRender.vertices += count;\n\n\t\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\t\t\telse if ( mode === gl.POINTS ) infoRender.points += count;\n\n\t\t}\n\n\t\tfunction renderInstances( geometry, start, count ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\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\tvar position = geometry.attributes.position;\n\n\t\t\tif ( position.isInterleavedBufferAttribute ) {\n\n\t\t\t\tcount = position.data.count;\n\n\t\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t\t} else {\n\n\t\t\t\textension.drawArraysInstancedANGLE( mode, start, count, geometry.maxInstancedCount );\n\n\t\t\t}\n\n\t\t\tinfoRender.calls ++;\n\t\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\t\t\telse if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count;\n\n\t\t}\n\n\t\t//\n\n\t\tthis.setMode = setMode;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLGeometries( gl, attributes, infoMemory ) {\n\n\t\tvar geometries = {};\n\t\tvar wireframeAttributes = {};\n\n\t\tfunction onGeometryDispose( event ) {\n\n\t\t\tvar geometry = event.target;\n\t\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t\t}\n\n\t\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t\t}\n\n\t\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tdelete geometries[ geometry.id ];\n\n\t\t\t// TODO Remove duplicate code\n\n\t\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\t\tif ( attribute ) {\n\n\t\t\t\tattributes.remove( attribute );\n\t\t\t\tdelete wireframeAttributes[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tattribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\t\tif ( attribute ) {\n\n\t\t\t\tattributes.remove( attribute );\n\t\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tinfoMemory.geometries --;\n\n\t\t}\n\n\t\tfunction get( object, geometry ) {\n\n\t\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfoMemory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t\tfunction update( geometry ) {\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t\t// morph targets\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var name in morphAttributes ) {\n\n\t\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getWireframeAttribute( geometry ) {\n\n\t\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\t\tif ( attribute ) return attribute;\n\n\t\t\tvar indices = [];\n\n\t\t\tvar geometryIndex = geometry.index;\n\t\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t\t// console.time( 'wireframe' );\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\tvar array = geometryIndex.array;\n\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar array = geometryAttributes.position.array;\n\n\t\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\t\tvar a = i + 0;\n\t\t\t\t\tvar b = i + 1;\n\t\t\t\t\tvar c = i + 2;\n\n\t\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// console.timeEnd( 'wireframe' );\n\n\t\t\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\n\t\t\tattributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t\t\treturn attribute;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tget: get,\n\t\t\tupdate: update,\n\n\t\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction UniformsCache() {\n\n\t\tvar lights = {};\n\n\t\treturn {\n\n\t\t\tget: function ( light ) {\n\n\t\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\t\treturn lights[ light.id ];\n\n\t\t\t\t}\n\n\t\t\t\tvar uniforms;\n\n\t\t\t\tswitch ( light.type ) {\n\n\t\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\t\tuniforms = {\n\t\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\t\treturn uniforms;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction WebGLLights() {\n\n\t\tvar cache = new UniformsCache();\n\n\t\tvar state = {\n\n\t\t\thash: '',\n\n\t\t\tambient: [ 0, 0, 0 ],\n\t\t\tdirectional: [],\n\t\t\tdirectionalShadowMap: [],\n\t\t\tdirectionalShadowMatrix: [],\n\t\t\tspot: [],\n\t\t\tspotShadowMap: [],\n\t\t\tspotShadowMatrix: [],\n\t\t\trectArea: [],\n\t\t\tpoint: [],\n\t\t\tpointShadowMap: [],\n\t\t\tpointShadowMatrix: [],\n\t\t\themi: []\n\n\t\t};\n\n\t\tvar vector3 = new Vector3();\n\t\tvar matrix4 = new Matrix4();\n\t\tvar matrix42 = new Matrix4();\n\n\t\tfunction setup( lights, shadows, camera ) {\n\n\t\t\tvar r = 0, g = 0, b = 0;\n\n\t\t\tvar directionalLength = 0;\n\t\t\tvar pointLength = 0;\n\t\t\tvar spotLength = 0;\n\t\t\tvar rectAreaLength = 0;\n\t\t\tvar hemiLength = 0;\n\n\t\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\t\tvar light = lights[ i ];\n\n\t\t\t\tvar color = light.color;\n\t\t\t\tvar intensity = light.intensity;\n\t\t\t\tvar distance = light.distance;\n\n\t\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\t\tr += color.r * intensity;\n\t\t\t\t\tg += color.g * intensity;\n\t\t\t\t\tb += color.b * intensity;\n\n\t\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\t\tdirectionalLength ++;\n\n\t\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\t\tspotLength ++;\n\n\t\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t\t// (a) intensity controls irradiance of entire light\n\t\t\t\t\tuniforms.color\n\t\t\t\t\t\t.copy( color )\n\t\t\t\t\t\t.multiplyScalar( intensity / ( light.width * light.height ) );\n\n\t\t\t\t\t// (b) intensity controls the radiance per light area\n\t\t\t\t\t// uniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\t\tmatrix42.identity();\n\t\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\t\tuniforms.halfWidth.set( light.width * 0.5,                0.0, 0.0 );\n\t\t\t\t\tuniforms.halfHeight.set(              0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\t\trectAreaLength ++;\n\n\t\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\t\tpointLength ++;\n\n\t\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\t\themiLength ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.ambient[ 0 ] = r;\n\t\t\tstate.ambient[ 1 ] = g;\n\t\t\tstate.ambient[ 2 ] = b;\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\t// TODO (sam-g-steel) why aren't we using join\n\t\t\tstate.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + rectAreaLength + ',' + hemiLength + ',' + shadows.length;\n\n\t\t}\n\n\t\treturn {\n\t\t\tsetup: setup,\n\t\t\tstate: state\n\t\t}\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLObjects( geometries, infoRender ) {\n\n\t\tvar updateList = {};\n\n\t\tfunction update( object ) {\n\n\t\t\tvar frame = infoRender.frame;\n\n\t\t\tvar geometry = object.geometry;\n\t\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t\t// Update once per frame\n\n\t\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tgeometries.update( buffergeometry );\n\n\t\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t\t}\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t\tfunction clear() {\n\n\t\t\tupdateList = {};\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tupdate: update,\n\t\t\tclear: clear\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction addLineNumbers( string ) {\n\n\t\tvar lines = string.split( '\\n' );\n\n\t\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t\t}\n\n\t\treturn lines.join( '\\n' );\n\n\t}\n\n\tfunction WebGLShader( gl, type, string ) {\n\n\t\tvar shader = gl.createShader( type );\n\n\t\tgl.shaderSource( shader, string );\n\t\tgl.compileShader( shader );\n\n\t\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t\t}\n\n\t\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t\t}\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\treturn shader;\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tvar programIdCount = 0;\n\n\tfunction getEncodingComponents( encoding ) {\n\n\t\tswitch ( encoding ) {\n\n\t\t\tcase LinearEncoding:\n\t\t\t\treturn [ 'Linear','( value )' ];\n\t\t\tcase sRGBEncoding:\n\t\t\t\treturn [ 'sRGB','( value )' ];\n\t\t\tcase RGBEEncoding:\n\t\t\t\treturn [ 'RGBE','( value )' ];\n\t\t\tcase RGBM7Encoding:\n\t\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\t\tcase RGBM16Encoding:\n\t\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\t\tcase RGBDEncoding:\n\t\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\t\tcase GammaEncoding:\n\t\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t\t}\n\n\t}\n\n\tfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\t\tvar components = getEncodingComponents( encoding );\n\t\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n\t}\n\n\tfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\t\tvar components = getEncodingComponents( encoding );\n\t\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n\t}\n\n\tfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\t\tvar toneMappingName;\n\n\t\tswitch ( toneMapping ) {\n\n\t\t\tcase LinearToneMapping:\n\t\t\t\ttoneMappingName = \"Linear\";\n\t\t\t\tbreak;\n\n\t\t\tcase ReinhardToneMapping:\n\t\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\t\tbreak;\n\n\t\t\tcase Uncharted2ToneMapping:\n\t\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\t\tbreak;\n\n\t\t\tcase CineonToneMapping:\n\t\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t\t}\n\n\t\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n\t}\n\n\tfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\t\textensions = extensions || {};\n\n\t\tvar chunks = [\n\t\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t\t];\n\n\t\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tfunction generateDefines( defines ) {\n\n\t\tvar chunks = [];\n\n\t\tfor ( var name in defines ) {\n\n\t\t\tvar value = defines[ name ];\n\n\t\t\tif ( value === false ) continue;\n\n\t\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t\t}\n\n\t\treturn chunks.join( '\\n' );\n\n\t}\n\n\tfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\t\tvar attributes = {};\n\n\t\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\t\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\t\tvar info = gl.getActiveAttrib( program, i );\n\t\t\tvar name = info.name;\n\n\t\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t\t}\n\n\t\treturn attributes;\n\n\t}\n\n\tfunction filterEmptyLine( string ) {\n\n\t\treturn string !== '';\n\n\t}\n\n\tfunction replaceLightNums( string, parameters ) {\n\n\t\treturn string\n\t\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n\t}\n\n\tfunction parseIncludes( string ) {\n\n\t\tvar pattern = /^[ \\t]*#include +<([\\w\\d.]+)>/gm;\n\n\t\tfunction replace( match, include ) {\n\n\t\t\tvar replace = ShaderChunk[ include ];\n\n\t\t\tif ( replace === undefined ) {\n\n\t\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t\t}\n\n\t\t\treturn parseIncludes( replace );\n\n\t\t}\n\n\t\treturn string.replace( pattern, replace );\n\n\t}\n\n\tfunction unrollLoops( string ) {\n\n\t\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\t\tfunction replace( match, start, end, snippet ) {\n\n\t\t\tvar unroll = '';\n\n\t\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t\t}\n\n\t\t\treturn unroll;\n\n\t\t}\n\n\t\treturn string.replace( pattern, replace );\n\n\t}\n\n\tfunction WebGLProgram( renderer, extensions, code, material, shader, parameters ) {\n\n\t\tvar gl = renderer.context;\n\n\t\tvar defines = material.defines;\n\n\t\tvar vertexShader = shader.vertexShader;\n\t\tvar fragmentShader = shader.fragmentShader;\n\n\t\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\t\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t\t}\n\n\t\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\t\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\t\tif ( parameters.envMap ) {\n\n\t\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\t\tcase CubeReflectionMapping:\n\t\t\t\tcase CubeRefractionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase EquirectangularReflectionMapping:\n\t\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase SphericalReflectionMapping:\n\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\t\tcase CubeRefractionMapping:\n\t\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tswitch ( material.combine ) {\n\n\t\t\t\tcase MultiplyOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MixOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase AddOperation:\n\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t\t// console.log( 'building new program ' );\n\n\t\t//\n\n\t\tvar customExtensions = generateExtensions( material.extensions, parameters, extensions );\n\n\t\tvar customDefines = generateDefines( defines );\n\n\t\t//\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar prefixVertex, prefixFragment;\n\n\t\tif ( material.isRawShaderMaterial ) {\n\n\t\t\tprefixVertex = [\n\n\t\t\t\tcustomDefines,\n\n\t\t\t\t'\\n'\n\n\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\tprefixFragment = [\n\n\t\t\t\tcustomExtensions,\n\t\t\t\tcustomDefines,\n\n\t\t\t\t'\\n'\n\n\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t} else {\n\n\t\t\tprefixVertex = [\n\n\t\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\t\tcustomDefines,\n\n\t\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t\t'attribute vec3 position;',\n\t\t\t\t'attribute vec3 normal;',\n\t\t\t\t'attribute vec2 uv;',\n\n\t\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t\t'\tattribute vec3 color;',\n\n\t\t\t\t'#endif',\n\n\t\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t\t'\t#else',\n\n\t\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t\t'\t#endif',\n\n\t\t\t\t'#endif',\n\n\t\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t\t'#endif',\n\n\t\t\t\t'\\n'\n\n\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\tprefixFragment = [\n\n\t\t\t\tcustomExtensions,\n\n\t\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\t\tcustomDefines,\n\n\t\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\t\t\t\t'#define UNION_CLIPPING_PLANES ' + (parameters.numClippingPlanes - parameters.numClipIntersection),\n\n\t\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t\tparameters.envMap && extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t\t( parameters.toneMapping !== NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\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\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t\t'\\n'\n\n\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t}\n\n\t\tvertexShader = parseIncludes( vertexShader );\n\t\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\t\tfragmentShader = parseIncludes( fragmentShader );\n\t\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\t\tif ( ! material.isShaderMaterial ) {\n\n\t\t\tvertexShader = unrollLoops( vertexShader );\n\t\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t\t}\n\n\t\tvar vertexGlsl = prefixVertex + vertexShader;\n\t\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t\t// console.log( '*VERTEX*', vertexGlsl );\n\t\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\t\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\t\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\t\tgl.attachShader( program, glVertexShader );\n\t\tgl.attachShader( program, glFragmentShader );\n\n\t\t// Force a particular attribute to index 0.\n\n\t\tif ( material.index0AttributeName !== undefined ) {\n\n\t\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t\t} else if ( parameters.morphTargets === true ) {\n\n\t\t\t// programs with morphTargets displace position out of attribute 0\n\t\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t\t}\n\n\t\tgl.linkProgram( program );\n\n\t\tvar programLog = gl.getProgramInfoLog( program );\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\t\t\t\tmaterial: material,\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\t// clean up\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\t// set up caching for uniform locations\n\n\t\tvar cachedUniforms;\n\n\t\tthis.getUniforms = function () {\n\n\t\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t\tcachedUniforms = new WebGLUniforms( gl, program, renderer );\n\n\t\t\t}\n\n\t\t\treturn cachedUniforms;\n\n\t\t};\n\n\t\t// set up caching for attribute locations\n\n\t\tvar cachedAttributes;\n\n\t\tthis.getAttributes = function () {\n\n\t\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t\t}\n\n\t\t\treturn cachedAttributes;\n\n\t\t};\n\n\t\t// free resource\n\n\t\tthis.destroy = function() {\n\n\t\t\tgl.deleteProgram( program );\n\t\t\tthis.program = undefined;\n\n\t\t};\n\n\t\t// DEPRECATED\n\n\t\tObject.defineProperties( this, {\n\n\t\t\tuniforms: {\n\t\t\t\tget: function() {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\t\treturn this.getUniforms();\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tattributes: {\n\t\t\t\tget: function() {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\t\treturn this.getAttributes();\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\n\t\t//\n\n\t\tthis.id = programIdCount ++;\n\t\tthis.code = code;\n\t\tthis.usedTimes = 1;\n\t\tthis.program = program;\n\t\tthis.vertexShader = glVertexShader;\n\t\tthis.fragmentShader = glFragmentShader;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\t\tvar programs = [];\n\n\t\tvar shaderIDs = {\n\t\t\tMeshDepthMaterial: 'depth',\n\t\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\t\tMeshNormalMaterial: 'normal',\n\t\t\tMeshBasicMaterial: 'basic',\n\t\t\tMeshLambertMaterial: 'lambert',\n\t\t\tMeshPhongMaterial: 'phong',\n\t\t\tMeshToonMaterial: 'phong',\n\t\t\tMeshStandardMaterial: 'physical',\n\t\t\tMeshPhysicalMaterial: 'physical',\n\t\t\tLineBasicMaterial: 'basic',\n\t\t\tLineDashedMaterial: 'dashed',\n\t\t\tPointsMaterial: 'points',\n\t\t\tShadowMaterial: 'shadow'\n\t\t};\n\n\t\tvar parameterNames = [\n\t\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t\t];\n\n\n\t\tfunction allocateBones( object ) {\n\n\t\t\tvar skeleton = object.skeleton;\n\t\t\tvar bones = skeleton.bones;\n\n\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\treturn 1024;\n\n\t\t\t} else {\n\n\t\t\t\t// default for when object is not specified\n\t\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t\t//\n\t\t\t\t//  - leave some extra space for other uniforms\n\t\t\t\t//  - limit here is ANGLE's 254 max uniform vectors\n\t\t\t\t//    (up to 54 should be safe)\n\n\t\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\t\treturn 0;\n\n\t\t\t\t}\n\n\t\t\t\treturn maxBones;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\t\tvar encoding;\n\n\t\t\tif ( ! map ) {\n\n\t\t\t\tencoding = LinearEncoding;\n\n\t\t\t} else if ( map.isTexture ) {\n\n\t\t\t\tencoding = map.encoding;\n\n\t\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\tencoding = map.texture.encoding;\n\n\t\t\t}\n\n\t\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\t\tencoding = GammaEncoding;\n\n\t\t\t}\n\n\t\t\treturn encoding;\n\n\t\t}\n\n\t\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t\t// (not to blow over maxLights budget)\n\n\t\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\t\tvar precision = capabilities.precision;\n\n\t\t\tif ( material.precision !== null ) {\n\n\t\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\tvar parameters = {\n\n\t\t\t\tshaderID: shaderID,\n\n\t\t\t\tprecision: precision,\n\t\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\t\tmap: !! material.map,\n\t\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\t\tenvMap: !! material.envMap,\n\t\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\t\tlightMap: !! material.lightMap,\n\t\t\t\taoMap: !! material.aoMap,\n\t\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\t\tbumpMap: !! material.bumpMap,\n\t\t\t\tnormalMap: !! material.normalMap,\n\t\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\t\tspecularMap: !! material.specularMap,\n\t\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\t\tcombine: material.combine,\n\n\t\t\t\tvertexColors: material.vertexColors,\n\n\t\t\t\tfog: !! fog,\n\t\t\t\tuseFog: material.fog,\n\t\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\t\tflatShading: material.flatShading,\n\n\t\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\t\tmaxBones: maxBones,\n\t\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\t\tmorphTargets: material.morphTargets,\n\t\t\t\tmorphNormals: material.morphNormals,\n\t\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\t\tnumDirLights: lights.directional.length,\n\t\t\t\tnumPointLights: lights.point.length,\n\t\t\t\tnumSpotLights: lights.spot.length,\n\t\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\t\tdithering: material.dithering,\n\n\t\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\t\talphaTest: material.alphaTest,\n\t\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\t\tflipSided: material.side === BackSide,\n\n\t\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t\t};\n\n\t\t\treturn parameters;\n\n\t\t};\n\n\t\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\t\tvar array = [];\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tarray.push( parameters.shaderID );\n\n\t\t\t} else {\n\n\t\t\t\tarray.push( material.fragmentShader );\n\t\t\t\tarray.push( material.vertexShader );\n\n\t\t\t}\n\n\t\t\tif ( material.defines !== undefined ) {\n\n\t\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\t\tarray.push( name );\n\t\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\t\tarray.push( renderer.gammaOutput );\n\n\t\t\treturn array.join();\n\n\t\t};\n\n\t\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\t\tvar program;\n\n\t\t\t// Check if code has been already compiled\n\t\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\t\tvar programInfo = programs[ p ];\n\n\t\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\t\tprogram = programInfo;\n\t\t\t\t\t++ program.usedTimes;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters );\n\t\t\t\tprograms.push( program );\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t};\n\n\t\tthis.releaseProgram = function ( program ) {\n\n\t\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t\t// Remove from unordered set\n\t\t\t\tvar i = programs.indexOf( program );\n\t\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\t\tprograms.pop();\n\n\t\t\t\t// Free WebGL resources\n\t\t\t\tprogram.destroy();\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tthis.programs = programs;\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, infoMemory ) {\n\n\t\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t\t//\n\n\t\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t\t// premultiplied alpha.\n\n\t\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\t\treturn canvas;\n\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t}\n\n\t\tfunction isPowerOfTwo( image ) {\n\n\t\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t\t}\n\n\t\tfunction makePowerOfTwo( image ) {\n\n\t\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = _Math.nearestPowerOfTwo( image.width );\n\t\t\t\tcanvas.height = _Math.nearestPowerOfTwo( image.height );\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\t\treturn canvas;\n\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t}\n\n\t\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t\t}\n\n\t\tfunction textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) {\n\n\t\t\treturn texture.generateMipmaps && isPowerOfTwo &&\n\t\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t\t}\n\n\t\t// Fallback filters for non-power-of-2 textures\n\n\t\tfunction filterFallback( f ) {\n\n\t\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\t\treturn _gl.NEAREST;\n\n\t\t\t}\n\n\t\t\treturn _gl.LINEAR;\n\n\t\t}\n\n\t\t//\n\n\t\tfunction onTextureDispose( event ) {\n\n\t\t\tvar texture = event.target;\n\n\t\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\t\tdeallocateTexture( texture );\n\n\t\t\tinfoMemory.textures --;\n\n\n\t\t}\n\n\t\tfunction onRenderTargetDispose( event ) {\n\n\t\t\tvar renderTarget = event.target;\n\n\t\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t\tinfoMemory.textures --;\n\n\t\t}\n\n\t\t//\n\n\t\tfunction deallocateTexture( texture ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t\t} else {\n\n\t\t\t\t// 2D texture\n\n\t\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t\t// remove all webgl properties\n\t\t\tproperties.remove( texture );\n\n\t\t}\n\n\t\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\t\tif ( ! renderTarget ) return;\n\n\t\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t\t}\n\n\t\t\tproperties.remove( renderTarget.texture );\n\t\t\tproperties.remove( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\n\n\t\tfunction setTexture2D( texture, slot ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tvar image = texture.image;\n\n\t\t\t\tif ( image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tfunction setTextureCube( texture, slot ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.image.length === 6 ) {\n\n\t\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t\tinfoMemory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\t\tvar cubeImage = [];\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\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\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\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\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\n\n\t\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t\t}\n\n\t\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\t\tvar extension;\n\n\t\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, utils.convert( texture.wrapS ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, utils.convert( texture.wrapT ) );\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, utils.convert( texture.magFilter ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, utils.convert( texture.minFilter ) );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( extension ) {\n\n\t\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\tinfoMemory.textures ++;\n\n\t\t\t}\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\t\timage = makePowerOfTwo( image );\n\n\t\t\t}\n\n\t\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthFormat && internalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t        console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\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\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, 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 .uploadTexture()' );\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( _gl.TEXTURE_2D, i, glFormat, 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} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\t// Render targets\n\n\t\t// Setup storage for target texture and bind it to correct framebuffer\n\t\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t}\n\n\t\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\t\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t} else {\n\n\t\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t}\n\n\t\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\t\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( !( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t\t}\n\n\t\t\t// upload an empty depth texture with framebuffer size\n\t\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t\t}\n\n\t\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup GL resources for a non-texture depth buffer\n\t\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t\t} else {\n\n\t\t\t\tif ( isCube ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t}\n\n\t\t// Set up GL resources for the render target\n\t\tfunction setupRenderTarget( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfoMemory.textures ++;\n\n\t\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t\t// Setup framebuffer\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\t// Setup color buffer\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t\t}\n\n\t\t\t// Setup depth and stencil buffers\n\n\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\t\tvar texture = renderTarget.texture;\n\t\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) {\n\n\t\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\t_gl.generateMipmap( target );\n\t\t\t\tstate.bindTexture( target, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setTexture2D = setTexture2D;\n\t\tthis.setTextureCube = setTextureCube;\n\t\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\t\tthis.setupRenderTarget = setupRenderTarget;\n\t\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n\t}\n\n\t/**\n\t * @author fordacious / fordacious.github.io\n\t */\n\n\tfunction WebGLProperties() {\n\n\t\tvar properties = {};\n\n\t\tfunction get( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t}\n\n\t\tfunction remove( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t}\n\n\t\tfunction clear() {\n\n\t\t\tproperties = {};\n\n\t\t}\n\n\t\treturn {\n\t\t\tget: get,\n\t\t\tremove: remove,\n\t\t\tclear: clear\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLState( gl, extensions, utils ) {\n\n\t\tfunction ColorBuffer() {\n\n\t\t\tvar locked = false;\n\n\t\t\tvar color = new Vector4();\n\t\t\tvar currentColorMask = null;\n\t\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\t\treturn {\n\n\t\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\t\tlocked = lock;\n\n\t\t\t\t},\n\n\t\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\treset: function () {\n\n\t\t\t\t\tlocked = false;\n\n\t\t\t\t\tcurrentColorMask = null;\n\t\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction DepthBuffer() {\n\n\t\t\tvar locked = false;\n\n\t\t\tvar currentDepthMask = null;\n\t\t\tvar currentDepthFunc = null;\n\t\t\tvar currentDepthClear = null;\n\n\t\t\treturn {\n\n\t\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\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\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\t\tlocked = lock;\n\n\t\t\t\t},\n\n\t\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\treset: function () {\n\n\t\t\t\t\tlocked = false;\n\n\t\t\t\t\tcurrentDepthMask = null;\n\t\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\tfunction StencilBuffer() {\n\n\t\t\tvar locked = false;\n\n\t\t\tvar currentStencilMask = null;\n\t\t\tvar currentStencilFunc = null;\n\t\t\tvar currentStencilRef = null;\n\t\t\tvar currentStencilFuncMask = null;\n\t\t\tvar currentStencilFail = null;\n\t\t\tvar currentStencilZFail = null;\n\t\t\tvar currentStencilZPass = null;\n\t\t\tvar currentStencilClear = null;\n\n\t\t\treturn {\n\n\t\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t\t     currentStencilRef \t!== stencilRef \t||\n\t\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\t\tlocked = lock;\n\n\t\t\t\t},\n\n\t\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\treset: function () {\n\n\t\t\t\t\tlocked = false;\n\n\t\t\t\t\tcurrentStencilMask = null;\n\t\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\t\tcurrentStencilRef = null;\n\t\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\t\tcurrentStencilFail = null;\n\t\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\t//\n\n\t\tvar colorBuffer = new ColorBuffer();\n\t\tvar depthBuffer = new DepthBuffer();\n\t\tvar stencilBuffer = new StencilBuffer();\n\n\t\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\t\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\t\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\t\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\t\tvar capabilities = {};\n\n\t\tvar compressedTextureFormats = null;\n\n\t\tvar currentProgram = null;\n\n\t\tvar currentBlending = null;\n\t\tvar currentBlendEquation = null;\n\t\tvar currentBlendSrc = null;\n\t\tvar currentBlendDst = null;\n\t\tvar currentBlendEquationAlpha = null;\n\t\tvar currentBlendSrcAlpha = null;\n\t\tvar currentBlendDstAlpha = null;\n\t\tvar currentPremultipledAlpha = false;\n\n\t\tvar currentFlipSided = null;\n\t\tvar currentCullFace = null;\n\n\t\tvar currentLineWidth = null;\n\n\t\tvar currentPolygonOffsetFactor = null;\n\t\tvar currentPolygonOffsetUnits = null;\n\n\t\tvar maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\t\tvar version = parseFloat( /^WebGL\\ ([0-9])/.exec( gl.getParameter( gl.VERSION ) )[ 1 ] );\n\t\tvar lineWidthAvailable = parseFloat( version ) >= 1.0;\n\n\t\tvar currentTextureSlot = null;\n\t\tvar currentBoundTextures = {};\n\n\t\tvar currentScissor = new Vector4();\n\t\tvar currentViewport = new Vector4();\n\n\t\tfunction createTexture( type, target, count ) {\n\n\t\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\t\tvar texture = gl.createTexture();\n\n\t\t\tgl.bindTexture( type, texture );\n\t\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t\tvar emptyTextures = {};\n\t\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\t\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t\t// init\n\n\t\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\t\tdepthBuffer.setClear( 1 );\n\t\tstencilBuffer.setClear( 0 );\n\n\t\tenable( gl.DEPTH_TEST );\n\t\tdepthBuffer.setFunc( LessEqualDepth );\n\n\t\tsetFlipSided( false );\n\t\tsetCullFace( CullFaceBack );\n\t\tenable( gl.CULL_FACE );\n\n\t\tenable( gl.BLEND );\n\t\tsetBlending( NormalBlending );\n\n\t\t//\n\n\t\tfunction initAttributes() {\n\n\t\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\t\tnewAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction enableAttribute( attribute ) {\n\n\t\t\tnewAttributes[ attribute ] = 1;\n\n\t\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t\t}\n\n\t\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\t\tnewAttributes[ attribute ] = 1;\n\n\t\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t\t}\n\n\t\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction disableUnusedAttributes() {\n\n\t\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction enable( id ) {\n\n\t\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\t\tgl.enable( id );\n\t\t\t\tcapabilities[ id ] = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction disable( id ) {\n\n\t\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\t\tgl.disable( id );\n\t\t\t\tcapabilities[ id ] = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getCompressedTextureFormats() {\n\n\t\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\t\tcompressedTextureFormats = [];\n\n\t\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t\t     extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t\t     extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn compressedTextureFormats;\n\n\t\t}\n\n\t\tfunction useProgram( program ) {\n\n\t\t\tif ( currentProgram !== program ) {\n\n\t\t\t\tgl.useProgram( program );\n\n\t\t\t\tcurrentProgram = program;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\t\tif ( blending !== NoBlending ) {\n\n\t\t\t\tenable( gl.BLEND );\n\n\t\t\t} else {\n\n\t\t\t\tdisable( gl.BLEND );\n\n\t\t\t}\n\n\t\t\tif ( blending !== CustomBlending ) {\n\n\t\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\n\t\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\n\t\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\n\t\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendEquation = null;\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t} else {\n\n\t\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t\t}\n\n\t\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t}\n\n\t\tfunction setMaterial( material ) {\n\n\t\t\tmaterial.side === DoubleSide\n\t\t\t\t? disable( gl.CULL_FACE )\n\t\t\t\t: enable( gl.CULL_FACE );\n\n\t\t\tsetFlipSided( material.side === BackSide );\n\n\t\t\tmaterial.transparent === true\n\t\t\t\t? setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\n\t\t\t\t: setBlending( NoBlending );\n\n\t\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\t\tdepthBuffer.setTest( material.depthTest );\n\t\t\tdepthBuffer.setMask( material.depthWrite );\n\t\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\t}\n\n\t\t//\n\n\t\tfunction setFlipSided( flipSided ) {\n\n\t\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\t\tif ( flipSided ) {\n\n\t\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentFlipSided = flipSided;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setCullFace( cullFace ) {\n\n\t\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\t\tenable( gl.CULL_FACE );\n\n\t\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tdisable( gl.CULL_FACE );\n\n\t\t\t}\n\n\t\t\tcurrentCullFace = cullFace;\n\n\t\t}\n\n\t\tfunction setLineWidth( width ) {\n\n\t\t\tif ( width !== currentLineWidth ) {\n\n\t\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\t\tcurrentLineWidth = width;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\t\tif ( polygonOffset ) {\n\n\t\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setScissorTest( scissorTest ) {\n\n\t\t\tif ( scissorTest ) {\n\n\t\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t\t} else {\n\n\t\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// texture\n\n\t\tfunction activeTexture( webglSlot ) {\n\n\t\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\tactiveTexture();\n\n\t\t\t}\n\n\t\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\t\tif ( boundTexture === undefined ) {\n\n\t\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t\t}\n\n\t\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\t\tboundTexture.type = webglType;\n\t\t\t\tboundTexture.texture = webglTexture;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction compressedTexImage2D() {\n\n\t\t\ttry {\n\n\t\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction texImage2D() {\n\n\t\t\ttry {\n\n\t\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction scissor( scissor ) {\n\n\t\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\t\tcurrentScissor.copy( scissor );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction viewport( viewport ) {\n\n\t\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\t\tcurrentViewport.copy( viewport );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction reset() {\n\n\t\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcapabilities = {};\n\n\t\t\tcompressedTextureFormats = null;\n\n\t\t\tcurrentTextureSlot = null;\n\t\t\tcurrentBoundTextures = {};\n\n\t\t\tcurrentProgram = null;\n\n\t\t\tcurrentBlending = null;\n\n\t\t\tcurrentFlipSided = null;\n\t\t\tcurrentCullFace = null;\n\n\t\t\tcolorBuffer.reset();\n\t\t\tdepthBuffer.reset();\n\t\t\tstencilBuffer.reset();\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tbuffers: {\n\t\t\t\tcolor: colorBuffer,\n\t\t\t\tdepth: depthBuffer,\n\t\t\t\tstencil: stencilBuffer\n\t\t\t},\n\n\t\t\tinitAttributes: initAttributes,\n\t\t\tenableAttribute: enableAttribute,\n\t\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\t\tenable: enable,\n\t\t\tdisable: disable,\n\t\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\t\tuseProgram: useProgram,\n\n\t\t\tsetBlending: setBlending,\n\t\t\tsetMaterial: setMaterial,\n\n\t\t\tsetFlipSided: setFlipSided,\n\t\t\tsetCullFace: setCullFace,\n\n\t\t\tsetLineWidth: setLineWidth,\n\t\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\t\tsetScissorTest: setScissorTest,\n\n\t\t\tactiveTexture: activeTexture,\n\t\t\tbindTexture: bindTexture,\n\t\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\t\ttexImage2D: texImage2D,\n\n\t\t\tscissor: scissor,\n\t\t\tviewport: viewport,\n\n\t\t\treset: reset\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\t\tvar maxAnisotropy;\n\n\t\tfunction getMaxAnisotropy() {\n\n\t\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t\t} else {\n\n\t\t\t\tmaxAnisotropy = 0;\n\n\t\t\t}\n\n\t\t\treturn maxAnisotropy;\n\n\t\t}\n\n\t\tfunction getMaxPrecision( precision ) {\n\n\t\t\tif ( precision === 'highp' ) {\n\n\t\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\t\treturn 'highp';\n\n\t\t\t\t}\n\n\t\t\t\tprecision = 'mediump';\n\n\t\t\t}\n\n\t\t\tif ( precision === 'mediump' ) {\n\n\t\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\t\treturn 'mediump';\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn 'lowp';\n\n\t\t}\n\n\t\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\t\tvar maxPrecision = getMaxPrecision( precision );\n\n\t\tif ( maxPrecision !== precision ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\t\tprecision = maxPrecision;\n\n\t\t}\n\n\t\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true && !! extensions.get( 'EXT_frag_depth' );\n\n\t\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\t\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\t\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\t\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\t\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\t\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\t\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\t\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\t\tvar vertexTextures = maxVertexTextures > 0;\n\t\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\t\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\t\treturn {\n\n\t\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\t\tprecision: precision,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tmaxTextures: maxTextures,\n\t\t\tmaxVertexTextures: maxVertexTextures,\n\t\t\tmaxTextureSize: maxTextureSize,\n\t\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\t\tmaxAttributes: maxAttributes,\n\t\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\t\tmaxVaryings: maxVaryings,\n\t\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\t\tvertexTextures: vertexTextures,\n\t\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\t\tfloatVertexTextures: floatVertexTextures\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction ArrayCamera( array ) {\n\n\t\tPerspectiveCamera.call( this );\n\n\t\tthis.cameras = array || [];\n\n\t}\n\n\tArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\t\tconstructor: ArrayCamera,\n\n\t\tisArrayCamera: true\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebVRManager( renderer ) {\n\n\t\tvar scope = this;\n\n\t\tvar device = null;\n\t\tvar frameData = null;\n\n\t\tif ( 'VRFrameData' in window ) {\n\n\t\t\tframeData = new window.VRFrameData();\n\n\t\t}\n\n\t\tvar matrixWorldInverse = new Matrix4();\n\n\t\tvar standingMatrix = new Matrix4();\n\t\tvar standingMatrixInverse = new Matrix4();\n\n\t\tvar cameraL = new PerspectiveCamera();\n\t\tcameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 );\n\t\tcameraL.layers.enable( 1 );\n\n\t\tvar cameraR = new PerspectiveCamera();\n\t\tcameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 );\n\t\tcameraR.layers.enable( 2 );\n\n\t\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\t//\n\n\t\tvar currentSize, currentPixelRatio;\n\n\t\tfunction onVRDisplayPresentChange() {\n\n\t\t\tif ( device !== null && device.isPresenting ) {\n\n\t\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\t\tvar renderWidth = eyeParameters.renderWidth;\n\t\t\t\tvar renderHeight = eyeParameters.renderHeight;\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\tcurrentSize = renderer.getSize();\n\n\t\t\t\trenderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 );\n\n\t\t\t} else if ( scope.enabled ) {\n\n\t\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\t}\n\n\t\t}\n\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t\t//\n\n\t\tthis.enabled = false;\n\t\tthis.standing = false;\n\n\t\tthis.getDevice = function () {\n\n\t\t\treturn device;\n\n\t\t};\n\n\t\tthis.setDevice = function ( value ) {\n\n\t\t\tif ( value !== undefined ) device = value;\n\n\t\t};\n\n\t\tthis.getCamera = function ( camera ) {\n\n\t\t\tif ( device === null ) return camera;\n\n\t\t\tdevice.depthNear = camera.near;\n\t\t\tdevice.depthFar = camera.far;\n\n\t\t\tdevice.getFrameData( frameData );\n\n\t\t\t//\n\n\t\t\tvar pose = frameData.pose;\n\n\t\t\tif ( pose.position !== null ) {\n\n\t\t\t\tcamera.position.fromArray( pose.position );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.position.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( pose.orientation !== null ) {\n\n\t\t\t\tcamera.quaternion.fromArray( pose.orientation );\n\n\t\t\t}\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t\tvar stageParameters = device.stageParameters;\n\n\t\t\tif ( this.standing && stageParameters ) {\n\n\t\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\t\t\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\t\t\tcamera.matrixWorld.multiply( standingMatrix );\n\t\t\t\tcamera.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\t\t}\n\n\t\t\tif ( device.isPresenting === false ) return camera;\n\n\t\t\t//\n\n\t\t\tcameraL.near = camera.near;\n\t\t\tcameraR.near = camera.near;\n\n\t\t\tcameraL.far = camera.far;\n\t\t\tcameraR.far = camera.far;\n\n\t\t\tcameraVR.matrixWorld.copy( camera.matrixWorld );\n\t\t\tcameraVR.matrixWorldInverse.copy( camera.matrixWorldInverse );\n\n\t\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t\tif ( this.standing && stageParameters ) {\n\n\t\t\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\t\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\t\t}\n\n\t\t\tvar parent = camera.parent;\n\n\t\t\tif ( parent !== null ) {\n\n\t\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\t\t// HACK @mrdoob\n\t\t\t// https://github.com/w3c/webvr/issues/203\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t//\n\n\t\t\tvar layers = device.getLayers();\n\n\t\t\tif ( layers.length ) {\n\n\t\t\t\tvar layer = layers[ 0 ];\n\n\t\t\t\tif ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) {\n\n\t\t\t\t\tcameraL.bounds.fromArray( layer.leftBounds );\n\n\t\t\t\t}\n\n\t\t\t\tif ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) {\n\n\t\t\t\t\tcameraR.bounds.fromArray( layer.rightBounds );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getStandingMatrix = function () {\n\n\t\t\treturn standingMatrix;\n\n\t\t};\n\n\t\tthis.submitFrame = function () {\n\n\t\t\tif ( device && device.isPresenting ) device.submitFrame();\n\n\t\t};\n\n\t\tthis.dispose = function() {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction WebGLExtensions( gl ) {\n\n\t\tvar extensions = {};\n\n\t\treturn {\n\n\t\t\tget: function ( name ) {\n\n\t\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\t\treturn extensions[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tvar extension;\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extension === null ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t\t}\n\n\t\t\t\textensions[ name ] = extension;\n\n\t\t\t\treturn extension;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/**\n\t * @author tschw\n\t */\n\n\tfunction WebGLClipping() {\n\n\t\tvar scope = this,\n\n\t\t\tglobalState = null,\n\t\t\tnumGlobalPlanes = 0,\n\t\t\tlocalClippingEnabled = false,\n\t\t\trenderingShadows = false,\n\n\t\t\tplane = new Plane(),\n\t\t\tviewNormalMatrix = new Matrix3(),\n\n\t\t\tuniform = { value: null, needsUpdate: false };\n\n\t\tthis.uniform = uniform;\n\t\tthis.numPlanes = 0;\n\t\tthis.numIntersection = 0;\n\n\t\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\t\tvar enabled =\n\t\t\t\tplanes.length !== 0 ||\n\t\t\t\tenableLocalClipping ||\n\t\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t\t// run another frame in order to reset the state:\n\t\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\t\tlocalClippingEnabled;\n\n\t\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\t\tnumGlobalPlanes = planes.length;\n\n\t\t\treturn enabled;\n\n\t\t};\n\n\t\tthis.beginShadows = function() {\n\n\t\t\trenderingShadows = true;\n\t\t\tprojectPlanes( null );\n\n\t\t};\n\n\t\tthis.endShadows = function() {\n\n\t\t\trenderingShadows = false;\n\t\t\tresetGlobalState();\n\n\t\t};\n\n\t\tthis.setState = function( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\t\tif ( ! localClippingEnabled ||\n\t\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t\t// there's no local clipping\n\n\t\t\t\tif ( renderingShadows ) {\n\t\t\t\t\t// there's no global clipping\n\n\t\t\t\t\tprojectPlanes( null );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresetGlobalState();\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcache.clippingState = dstArray;\n\t\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\t\tthis.numPlanes += nGlobal;\n\n\t\t\t}\n\n\n\t\t};\n\n\t\tfunction resetGlobalState() {\n\n\t\t\tif ( uniform.value !== globalState ) {\n\n\t\t\t\tuniform.value = globalState;\n\t\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t\t}\n\n\t\t\tscope.numPlanes = numGlobalPlanes;\n\t\t\tscope.numIntersection = 0;\n\n\t\t}\n\n\t\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\t\tdstArray = null;\n\n\t\t\tif ( nPlanes !== 0 ) {\n\n\t\t\t\tdstArray = uniform.value;\n\n\t\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tuniform.value = dstArray;\n\t\t\t\tuniform.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tscope.numPlanes = nPlanes;\n\t\t\t\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @author thespite / http://www.twitter.com/thespite\n\t */\n\n\tfunction WebGLUtils ( gl, extensions ) {\n\n\t\tfunction convert ( p ) {\n\n\t\t\tvar extension;\n\n\t\t\tif ( p === RepeatWrapping ) return gl.REPEAT;\n\t\t\tif ( p === ClampToEdgeWrapping ) return gl.CLAMP_TO_EDGE;\n\t\t\tif ( p === MirroredRepeatWrapping ) return gl.MIRRORED_REPEAT;\n\n\t\t\tif ( p === NearestFilter ) return gl.NEAREST;\n\t\t\tif ( p === NearestMipMapNearestFilter ) return gl.NEAREST_MIPMAP_NEAREST;\n\t\t\tif ( p === NearestMipMapLinearFilter ) return gl.NEAREST_MIPMAP_LINEAR;\n\n\t\t\tif ( p === LinearFilter ) return gl.LINEAR;\n\t\t\tif ( p === LinearMipMapNearestFilter ) return gl.LINEAR_MIPMAP_NEAREST;\n\t\t\tif ( p === LinearMipMapLinearFilter ) return gl.LINEAR_MIPMAP_LINEAR;\n\n\t\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\tif ( p === UnsignedShort565Type ) return gl.UNSIGNED_SHORT_5_6_5;\n\n\t\t\tif ( p === ByteType ) return gl.BYTE;\n\t\t\tif ( p === ShortType ) return gl.SHORT;\n\t\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\t\tif ( p === IntType ) return gl.INT;\n\t\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\t\tif ( p === HalfFloatType ) {\n\n\t\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t\t}\n\n\t\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t\tif ( p === AddEquation ) return gl.FUNC_ADD;\n\t\t\tif ( p === SubtractEquation ) return gl.FUNC_SUBTRACT;\n\t\t\tif ( p === ReverseSubtractEquation ) return gl.FUNC_REVERSE_SUBTRACT;\n\n\t\t\tif ( p === ZeroFactor ) return gl.ZERO;\n\t\t\tif ( p === OneFactor ) return gl.ONE;\n\t\t\tif ( p === SrcColorFactor ) return gl.SRC_COLOR;\n\t\t\tif ( p === OneMinusSrcColorFactor ) return gl.ONE_MINUS_SRC_COLOR;\n\t\t\tif ( p === SrcAlphaFactor ) return gl.SRC_ALPHA;\n\t\t\tif ( p === OneMinusSrcAlphaFactor ) return gl.ONE_MINUS_SRC_ALPHA;\n\t\t\tif ( p === DstAlphaFactor ) return gl.DST_ALPHA;\n\t\t\tif ( p === OneMinusDstAlphaFactor ) return gl.ONE_MINUS_DST_ALPHA;\n\n\t\t\tif ( p === DstColorFactor ) return gl.DST_COLOR;\n\t\t\tif ( p === OneMinusDstColorFactor ) return gl.ONE_MINUS_DST_COLOR;\n\t\t\tif ( p === SrcAlphaSaturateFactor ) return gl.SRC_ALPHA_SATURATE;\n\n\t\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t}\n\n\t\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t}\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t\treturn { convert: convert }\n\n\t}\n\n\t// import { Sphere } from '../math/Sphere';\n\t/**\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author szimek / https://github.com/szimek/\n\t * @author tschw\n\t */\n\n\tfunction WebGLRenderer( parameters ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\t\tparameters = parameters || {};\n\n\t\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t\tvar lightsArray = [];\n\t\tvar shadowsArray = [];\n\n\t\tvar currentRenderList = null;\n\n\t\tvar spritesArray = [];\n\t\tvar flaresArray = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = _canvas;\n\t\tthis.context = null;\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\t\tthis.gammaInput = false;\n\t\tthis.gammaOutput = false;\n\n\t\t// physical lights\n\n\t\tthis.physicallyCorrectLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = LinearToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\t\tthis.toneMappingWhitePoint = 1.0;\n\n\t\t// morphs\n\n\t\tthis.maxMorphTargets = 8;\n\t\tthis.maxMorphNormals = 4;\n\n\t\t// internal properties\n\n\t\tvar _this = this,\n\n\t\t\t_isContextLost = false,\n\n\t\t\t// internal state cache\n\n\t\t\t_currentRenderTarget = null,\n\t\t\t_currentFramebuffer = null,\n\t\t\t_currentMaterialId = - 1,\n\t\t\t_currentGeometryProgram = '',\n\n\t\t\t_currentCamera = null,\n\t\t\t_currentArrayCamera = null,\n\n\t\t\t_currentViewport = new Vector4(),\n\t\t\t_currentScissor = new Vector4(),\n\t\t\t_currentScissorTest = null,\n\n\t\t\t//\n\n\t\t\t_usedTextureUnits = 0,\n\n\t\t\t//\n\n\t\t\t_width = _canvas.width,\n\t\t\t_height = _canvas.height,\n\n\t\t\t_pixelRatio = 1,\n\n\t\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t\t_scissorTest = false,\n\n\t\t\t// frustum\n\n\t\t\t_frustum = new Frustum(),\n\n\t\t\t// clipping\n\n\t\t\t_clipping = new WebGLClipping(),\n\t\t\t_clippingEnabled = false,\n\t\t\t_localClippingEnabled = false,\n\n\t\t\t// camera matrices cache\n\n\t\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t\t_vector3 = new Vector3(),\n\n\t\t\t// info\n\n\t\t\t_infoMemory = {\n\t\t\t\tgeometries: 0,\n\t\t\t\ttextures: 0\n\t\t\t},\n\n\t\t\t_infoRender = {\n\n\t\t\t\tframe: 0,\n\t\t\t\tcalls: 0,\n\t\t\t\tvertices: 0,\n\t\t\t\tfaces: 0,\n\t\t\t\tpoints: 0\n\n\t\t\t};\n\n\t\tthis.info = {\n\n\t\t\trender: _infoRender,\n\t\t\tmemory: _infoMemory,\n\t\t\tprograms: null\n\n\t\t};\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tvar _gl;\n\n\t\ttry {\n\n\t\t\tvar contextAttributes = {\n\t\t\t\talpha: _alpha,\n\t\t\t\tdepth: _depth,\n\t\t\t\tstencil: _stencil,\n\t\t\t\tantialias: _antialias,\n\t\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t\t};\n\n\t\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t\t}\n\n\t\tvar extensions, capabilities, state;\n\t\tvar properties, textures, attributes, geometries, objects, lights;\n\t\tvar programCache, renderLists;\n\n\t\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\t\tvar flareRenderer, spriteRenderer;\n\n\t\tvar utils;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_float_linear' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\t\tBufferGeometry.MaxIndex = 4294967296;\n\n\t\t\t}\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\tstate = new WebGLState( _gl, extensions, utils );\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, _infoMemory );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, _infoMemory );\n\t\t\tobjects = new WebGLObjects( geometries, _infoRender );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\t\tlights = new WebGLLights();\n\t\t\trenderLists = new WebGLRenderLists();\n\n\t\t\tbackground = new WebGLBackground( _this, state, geometries, _premultipliedAlpha );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t\t\tflareRenderer = new WebGLFlareRenderer( _this, _gl, state, textures, capabilities );\n\t\t\tspriteRenderer = new WebGLSpriteRenderer( _this, _gl, state, textures, capabilities );\n\n\t\t\t_this.info.programs = programCache.programs;\n\n\t\t\t_this.context = _gl;\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.state = state;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// vr\n\n\t\tvar vr = new WebVRManager( _this );\n\n\t\tthis.vr = vr;\n\n\t\t// shadow map\n\n\t\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\t\tthis.shadowMap = shadowMap;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t\tvar device = vr.getDevice();\n\n\t\t\tif ( device && device.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_canvas.width = width * _pixelRatio;\n\t\t\t_canvas.height = height * _pixelRatio;\n\n\t\t\tif ( updateStyle !== false ) {\n\n\t\t\t\t_canvas.style.width = width + 'px';\n\t\t\t\t_canvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width * _pixelRatio,\n\t\t\t\theight: _height * _pixelRatio\n\t\t\t};\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\t_canvas.width = width * pixelRatio;\n\t\t\t_canvas.height = height * pixelRatio;\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\t_viewport.set( x, _height - y - height, width, height );\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\t_scissor.set( x, _height - y - height, width, height );\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = background.getClearColor;\n\t\tthis.setClearColor = background.setClearColor;\n\t\tthis.getClearAlpha = background.getClearAlpha;\n\t\tthis.setClearAlpha = background.setClearAlpha;\n\n\t\tthis.clear = function ( color, depth, stencil ) {\n\n\t\t\tvar bits = 0;\n\n\t\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\t\t\tthis.clear( color, depth, stencil );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t\trenderLists.dispose();\n\n\t\t\tvr.dispose();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( event ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tinitGLContext();\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tvar material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReference( material ) {\n\n\t\t\tvar programInfo = properties.get( material ).program;\n\n\t\t\tmaterial.program = undefined;\n\n\t\t\tif ( programInfo !== undefined ) {\n\n\t\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tfunction renderObjectImmediate( object, program, material ) {\n\n\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\t\tstate.initAttributes();\n\n\t\t\tvar buffers = properties.get( object );\n\n\t\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\t\tvar programAttributes = program.getAttributes();\n\n\t\t\tif ( object.hasPositions ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasNormals ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t\t\t! material.isMeshStandardMaterial &&\n\t\t\t\t\t! material.isMeshNormalMaterial &&\n\t\t\t\t\tmaterial.flatShading === true ) {\n\n\t\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( programAttributes.normal );\n\n\t\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( programAttributes.uv );\n\n\t\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( programAttributes.color );\n\n\t\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\t\tobject.count = 0;\n\n\t\t};\n\n\t\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tvar program = setProgram( camera, fog, material, object );\n\t\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + ( material.wireframe === true );\n\n\t\t\tvar updateBuffers = false;\n\n\t\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar position = geometry.attributes.position;\n\t\t\tvar rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\tvar attribute;\n\t\t\tvar renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\tif ( updateBuffers ) {\n\n\t\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, attribute.buffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar dataCount = 0;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdataCount = index.count;\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\tdataCount = position.count;\n\n\t\t\t}\n\n\t\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\t\tif ( drawCount === 0 ) return;\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t}\n\n\t\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\t\tstate.initAttributes();\n\n\t\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t\tvar programAttributes = program.getAttributes();\n\n\t\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\t\tfor ( var name in programAttributes ) {\n\n\t\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, ( startIndex * stride + offset ) * bytesPerElement );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * bytesPerElement );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\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}\n\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t}\n\n\t\t// Compile\n\n\t\tthis.compile = function ( scene, camera ) {\n\n\t\t\tlightsArray.length = 0;\n\t\t\tshadowsArray.length = 0;\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isLight ) {\n\n\t\t\t\t\tlightsArray.push( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tshadowsArray.push( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tif ( object.material ) {\n\n\t\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tvar isAnimating = false;\n\t\tvar onAnimationFrame = null;\n\n\t\tfunction start() {\n\n\t\t\tif ( isAnimating ) return;\n\t\t\t( vr.getDevice() || window ).requestAnimationFrame( loop );\n\t\t\tisAnimating = true;\n\n\t\t}\n\n\t\tfunction loop( time ) {\n\n\t\t\tif ( onAnimationFrame !== null ) onAnimationFrame( time );\n\t\t\t( vr.getDevice() || window ).requestAnimationFrame( loop );\n\n\t\t}\n\n\t\tthis.animate = function ( callback ) {\n\n\t\t\tonAnimationFrame = callback;\n\t\t\tstart();\n\n\t\t};\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost ) return;\n\n\t\t\t// reset caching for this frame\n\n\t\t\t_currentGeometryProgram = '';\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\t\tif ( vr.enabled ) {\n\n\t\t\t\tcamera = vr.getCamera( camera );\n\n\t\t\t}\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\tlightsArray.length = 0;\n\t\t\tshadowsArray.length = 0;\n\n\t\t\tspritesArray.length = 0;\n\t\t\tflaresArray.length = 0;\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\t\tcurrentRenderList.init();\n\n\t\t\tprojectObject( scene, camera, _this.sortObjects );\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort();\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t\t//\n\n\t\t\t_infoRender.frame ++;\n\t\t\t_infoRender.calls = 0;\n\t\t\t_infoRender.vertices = 0;\n\t\t\t_infoRender.faces = 0;\n\t\t\t_infoRender.points = 0;\n\n\t\t\tif ( renderTarget === undefined ) {\n\n\t\t\t\trenderTarget = null;\n\n\t\t\t}\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t\t//\n\n\t\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t\t// render scene\n\n\t\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\t\tif ( scene.overrideMaterial ) {\n\n\t\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t\t} else {\n\n\t\t\t\t// opaque pass (front-to-back order)\n\n\t\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t\t// transparent pass (back-to-front order)\n\n\t\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t}\n\n\t\t\t// custom renderers\n\n\t\t\tspriteRenderer.render( spritesArray, scene, camera );\n\t\t\tflareRenderer.render( flaresArray, scene, camera, _currentViewport );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t\t}\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t\tif ( vr.enabled ) {\n\n\t\t\t\tvr.submitFrame();\n\n\t\t\t}\n\n\t\t\t// _gl.finish();\n\n\t\t};\n\n\t\t/*\n\t\t// TODO Duplicated code (Frustum)\n\n\t\tvar _sphere = new Sphere();\n\n\t\tfunction isObjectViewable( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\t\treturn isSphereViewable( _sphere );\n\n\t\t}\n\n\t\tfunction isSpriteViewable( sprite ) {\n\n\t\t\t_sphere.center.set( 0, 0, 0 );\n\t\t\t_sphere.radius = 0.7071067811865476;\n\t\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn isSphereViewable( _sphere );\n\n\t\t}\n\n\t\tfunction isSphereViewable( sphere ) {\n\n\t\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\t\tif ( numPlanes === 0 ) return true;\n\n\t\t\tvar planes = _this.clippingPlanes,\n\n\t\t\t\tcenter = sphere.center,\n\t\t\t\tnegRad = - sphere.radius,\n\t\t\t\ti = 0;\n\n\t\t\tdo {\n\n\t\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t\t} while ( ++ i !== numPlanes );\n\n\t\t\treturn true;\n\n\t\t}\n\t\t*/\n\n\t\tfunction projectObject( object, camera, sortObjects ) {\n\n\t\t\tif ( ! object.visible ) return;\n\n\t\t\tvar visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isLight ) {\n\n\t\t\t\t\tlightsArray.push( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tshadowsArray.push( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tspritesArray.push( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isLensFlare ) {\n\n\t\t\t\t\tflaresArray.push( object );\n\n\t\t\t\t} else if ( object.isImmediateRenderObject ) {\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\tcurrentRenderList.push( object, null, object.material, _vector3.z, null );\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );\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} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, _vector3.z, null );\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\tvar children = object.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\t\tvar object = renderItem.object;\n\t\t\t\tvar geometry = renderItem.geometry;\n\t\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\t\tvar group = renderItem.group;\n\n\t\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\t\tvar bounds = camera2.bounds;\n\n\t\t\t\t\t\t\tvar x = bounds.x * _width;\n\t\t\t\t\t\t\tvar y = bounds.y * _height;\n\t\t\t\t\t\t\tvar width = bounds.z * _width;\n\t\t\t\t\t\t\tvar height = bounds.w * _height;\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );\n\n\t\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\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_currentArrayCamera = null;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\t\tstate.setMaterial( material );\n\n\t\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\trenderObjectImmediate( object, program, material );\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction initMaterial( material, fog, object ) {\n\n\t\t\tvar materialProperties = properties.get( material );\n\n\t\t\tvar parameters = programCache.getParameters(\n\t\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\t\tvar program = materialProperties.program;\n\t\t\tvar programChange = true;\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\t// new material\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t} else if ( program.code !== code ) {\n\n\t\t\t\t// changed glsl or parameters\n\t\t\t\treleaseMaterialProgramReference( material );\n\n\t\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t\t// same glsl and uniform list\n\t\t\t\treturn;\n\n\t\t\t} else {\n\n\t\t\t\t// only rebuild uniform list\n\t\t\t\tprogramChange = false;\n\n\t\t\t}\n\n\t\t\tif ( programChange ) {\n\n\t\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\t\tname: material.type,\n\t\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\t\tname: material.type,\n\t\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tmaterial.onBeforeCompile( materialProperties.shader );\n\n\t\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\t\tmaterialProperties.program = program;\n\t\t\t\tmaterial.program = program;\n\n\t\t\t}\n\n\t\t\tvar programAttributes = program.getAttributes();\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.morphNormals ) {\n\n\t\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\t\tif ( ! material.isShaderMaterial &&\n\t\t\t\t! material.isRawShaderMaterial ||\n\t\t\t\tmaterial.clipping === true ) {\n\n\t\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t\t}\n\n\t\t\tmaterialProperties.fog = fog;\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.lightsHash = lights.state.hash;\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\t\tuniformsList =\n\t\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\t}\n\n\t\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t\t_usedTextureUnits = 0;\n\n\t\t\tvar materialProperties = properties.get( material );\n\n\t\t\tif ( _clippingEnabled ) {\n\n\t\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\t\tvar useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\t_clipping.setState(\n\t\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.needsUpdate === false ) {\n\n\t\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t} else if ( material.lights && materialProperties.lightsHash !== lights.state.hash ) {\n\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.needsUpdate ) {\n\n\t\t\t\tinitMaterial( material, fog, object );\n\t\t\t\tmaterial.needsUpdate = false;\n\n\t\t\t}\n\n\t\t\tvar refreshProgram = false;\n\t\t\tvar refreshMaterial = false;\n\t\t\tvar refreshLights = false;\n\n\t\t\tvar program = materialProperties.program,\n\t\t\t\tp_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Avoid unneeded uniform updates per ArrayCamera's sub-camera\n\n\t\t\t\tif ( _currentCamera !== ( _currentArrayCamera || camera ) ) {\n\n\t\t\t\t\t_currentCamera = ( _currentArrayCamera || camera );\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t\t// load material specific uniforms\n\t\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t\t// not sure why, but otherwise weird things happen\n\n\t\t\tif ( material.skinning ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tvar skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t\t\t\t\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\t\tsize = _Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\t\tif ( material.lights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\t\tm_uniforms.color.value = material.color;\n\t\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t\t}\n\n\t\t\t\t// RectAreaLight Texture\n\t\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\t\tif ( m_uniforms.ltcMat !== undefined ) m_uniforms.ltcMat.value = UniformsLib.LTC_MAT_TEXTURE;\n\t\t\t\tif ( m_uniforms.ltcMag !== undefined ) m_uniforms.ltcMag.value = UniformsLib.LTC_MAG_TEXTURE;\n\n\t\t\t\tWebGLUniforms.upload(\n\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t\t}\n\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// Uniforms (refresh uniforms objects)\n\n\t\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t\tif ( material.color ) {\n\n\t\t\t\tuniforms.diffuse.value = material.color;\n\n\t\t\t}\n\n\t\t\tif ( material.emissive ) {\n\n\t\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t\t}\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\tuniforms.map.value = material.map;\n\n\t\t\t}\n\n\t\t\tif ( material.alphaMap ) {\n\n\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\t}\n\n\t\t\tif ( material.specularMap ) {\n\n\t\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\t}\n\n\t\t\tif ( material.envMap ) {\n\n\t\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t\t//  WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t\t//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\t}\n\n\t\t\tif ( material.lightMap ) {\n\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t}\n\n\t\t\tif ( material.aoMap ) {\n\n\t\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\t}\n\n\t\t\t// uv repeat and offset setting priorities\n\t\t\t// 1. color map\n\t\t\t// 2. specular map\n\t\t\t// 3. normal map\n\t\t\t// 4. bump map\n\t\t\t// 5. alpha map\n\t\t\t// 6. emissive map\n\n\t\t\tvar uvScaleMap;\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\tuvScaleMap = material.map;\n\n\t\t\t} else if ( material.specularMap ) {\n\n\t\t\t\tuvScaleMap = material.specularMap;\n\n\t\t\t} else if ( material.displacementMap ) {\n\n\t\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t\t} else if ( material.normalMap ) {\n\n\t\t\t\tuvScaleMap = material.normalMap;\n\n\t\t\t} else if ( material.bumpMap ) {\n\n\t\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t\t} else if ( material.roughnessMap ) {\n\n\t\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t\t} else if ( material.metalnessMap ) {\n\n\t\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t\t} else if ( material.alphaMap ) {\n\n\t\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t\t} else if ( material.emissiveMap ) {\n\n\t\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t\t// backwards compatibility\n\t\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t\t}\n\n\t\t\t\tvar offset = uvScaleMap.offset;\n\t\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t}\n\n\t\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\t\tuniforms.dashSize.value = material.dashSize;\n\t\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\t\tuniforms.scale.value = material.scale;\n\n\t\t}\n\n\t\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\t\t\tuniforms.opacity.value = material.opacity;\n\t\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\t\tuniforms.scale.value = _height * 0.5;\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tvar offset = material.map.offset;\n\t\t\t\tvar repeat = material.map.repeat;\n\n\t\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\t\tuniforms.fogColor.value = fog.color;\n\n\t\t\tif ( fog.isFog ) {\n\n\t\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\t\tuniforms.specular.value = material.specular;\n\t\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( material.bumpMap ) {\n\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\t}\n\n\t\t\tif ( material.normalMap ) {\n\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\t}\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t\tif ( material.gradientMap ) {\n\n\t\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\t\tuniforms.roughness.value = material.roughness;\n\t\t\tuniforms.metalness.value = material.metalness;\n\n\t\t\tif ( material.roughnessMap ) {\n\n\t\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.metalnessMap ) {\n\n\t\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( material.bumpMap ) {\n\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\t}\n\n\t\t\tif ( material.normalMap ) {\n\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\t}\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t\tif ( material.envMap ) {\n\n\t\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t}\n\n\t\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\t\tuniforms.farDistance.value = material.farDistance;\n\n\t\t}\n\n\t\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\t\tif ( material.bumpMap ) {\n\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\t}\n\n\t\t\tif ( material.normalMap ) {\n\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\t}\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\t// GL state setting\n\n\t\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\t\tstate.setCullFace( cullFace );\n\t\t\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\n\n\t\t};\n\n\t\t// Textures\n\n\t\tfunction allocTextureUnit() {\n\n\t\t\tvar textureUnit = _usedTextureUnits;\n\n\t\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t\t}\n\n\t\t\t_usedTextureUnits += 1;\n\n\t\t\treturn textureUnit;\n\n\t\t}\n\n\t\tthis.allocTextureUnit = allocTextureUnit;\n\n\t\t// this.setTexture2D = setTexture2D;\n\t\tthis.setTexture2D = ( function () {\n\n\t\t\tvar warned = false;\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\t\twarned = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture = texture.texture;\n\n\t\t\t\t}\n\n\t\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.setTexture = ( function () {\n\n\t\t\tvar warned = false;\n\n\t\t\treturn function setTexture( texture, slot ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.setTextureCube = ( function () {\n\n\t\t\tvar warned = false;\n\n\t\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t\t// backwards compatibility: peel texture.texture\n\t\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\t\twarned = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture = texture.texture;\n\n\t\t\t\t}\n\n\t\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t\t// TODO: unify these code paths\n\t\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\n\t\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t}\n\n\t\t\tvar framebuffer = null;\n\t\t\tvar isCube = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\t\tframebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tvar restore = false;\n\n\t\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t\trestore = true;\n\n\t\t\t\t}\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\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\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\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\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\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}\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction FogExp2 ( color, density ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n\t}\n\n\tFogExp2.prototype.isFogExp2 = true;\n\n\tFogExp2.prototype.clone = function () {\n\n\t\treturn new FogExp2( this.color.getHex(), this.density );\n\n\t};\n\n\tFogExp2.prototype.toJSON = function ( meta ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Fog ( color, near, far ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = ( near !== undefined ) ? near : 1;\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\n\n\t}\n\n\tFog.prototype.isFog = true;\n\n\tFog.prototype.clone = function () {\n\n\t\treturn new Fog( this.color.getHex(), this.near, this.far );\n\n\t};\n\n\tFog.prototype.toJSON = function ( meta ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Scene () {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.fog = null;\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t}\n\n\tScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Scene,\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\t\tthis.autoUpdate = source.autoUpdate;\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction LensFlare( texture, size, distance, blending, color ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.lensFlares = [];\n\n\t\tthis.positionScreen = new Vector3();\n\t\tthis.customUpdateCallback = undefined;\n\n\t\tif ( texture !== undefined ) {\n\n\t\t\tthis.add( texture, size, distance, blending, color );\n\n\t\t}\n\n\t}\n\n\tLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: LensFlare,\n\n\t\tisLensFlare: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source );\n\n\t\t\tthis.positionScreen.copy( source.positionScreen );\n\t\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\t\tif ( size === undefined ) size = - 1;\n\t\t\tif ( distance === undefined ) distance = 0;\n\t\t\tif ( opacity === undefined ) opacity = 1;\n\t\t\tif ( color === undefined ) color = new Color( 0xffffff );\n\t\t\tif ( blending === undefined ) blending = NormalBlending;\n\n\t\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\t\tthis.lensFlares.push( {\n\t\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\t\tscale: 1, \t\t// scale\n\t\t\t\trotation: 0, \t\t// rotation\n\t\t\t\topacity: opacity,\t// opacity\n\t\t\t\tcolor: color,\t\t// color\n\t\t\t\tblending: blending\t// blending\n\t\t\t} );\n\n\t\t},\n\n\t\t/*\n\t\t * Update lens flares update positions on all flares based on the screen position\n\t\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t\t */\n\n\t\tupdateLensFlares: function () {\n\n\t\t\tvar f, fl = this.lensFlares.length;\n\t\t\tvar flare;\n\t\t\tvar vecX = - this.positionScreen.x * 2;\n\t\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *\tuvOffset: new THREE.Vector2(),\n\t *\tuvScale: new THREE.Vector2()\n\t * }\n\t */\n\n\tfunction SpriteMaterial( parameters ) {\n\n\t\tMaterial.call( this );\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\t\tthis.map = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.fog = false;\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tSpriteMaterial.prototype = Object.create( Material.prototype );\n\tSpriteMaterial.prototype.constructor = SpriteMaterial;\n\tSpriteMaterial.prototype.isSpriteMaterial = true;\n\n\tSpriteMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.map = source.map;\n\n\t\tthis.rotation = source.rotation;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Sprite( material ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Sprite';\n\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t}\n\n\tSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Sprite,\n\n\t\tisSprite: true,\n\n\t\traycast: ( function () {\n\n\t\t\tvar intersectPoint = new Vector3();\n\t\t\tvar worldPosition = new Vector3();\n\t\t\tvar worldScale = new Vector3();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tworldPosition.setFromMatrixPosition( this.matrixWorld );\n\t\t\t\traycaster.ray.closestPointToPoint( worldPosition, intersectPoint );\n\n\t\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\t\t\t\tvar guessSizeSq = worldScale.x * worldScale.y / 4;\n\n\t\t\t\tif ( worldPosition.distanceToSquared( intersectPoint ) > guessSizeSq ) return;\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\tface: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction LOD() {\n\n\t\tObject3D.call( this );\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} );\n\n\t}\n\n\tLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: LOD,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\t\tvar levels = source.levels;\n\n\t\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tvar level = levels[ i ];\n\n\t\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddLevel: function ( object, distance ) {\n\n\t\t\tif ( distance === undefined ) distance = 0;\n\n\t\t\tdistance = Math.abs( distance );\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\t\tthis.add( object );\n\n\t\t},\n\n\t\tgetObjectForDistance: function ( distance ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t},\n\n\t\traycast: ( function () {\n\n\t\t\tvar matrixPosition = new Vector3();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tupdate: function () {\n\n\t\t\tvar v1 = new Vector3();\n\t\t\tvar v2 = new Vector3();\n\n\t\t\treturn function update( camera ) {\n\n\t\t\t\tvar levels = this.levels;\n\n\t\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t\t} else {\n\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\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\t\tlevels[ i ].object.visible = 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\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.levels = [];\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tvar level = levels[ i ];\n\n\t\t\t\tdata.object.levels.push( {\n\t\t\t\t\tobject: level.object.uuid,\n\t\t\t\t\tdistance: level.distance\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author michael guerrero / http://realitymeltdown.com\n\t * @author ikerr / http://verold.com\n\t */\n\n\tfunction Skeleton( bones, boneInverses ) {\n\n\t\t// copy the bone array\n\n\t\tbones = bones || [];\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t\t// use the supplied bone inverses or calculate the inverses\n\n\t\tif ( boneInverses === undefined ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( var 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\tObject.assign( Skeleton.prototype, {\n\n\t\tcalculateInverses: function () {\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tvar inverse = new Matrix4();\n\n\t\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boneInverses.push( inverse );\n\n\t\t\t}\n\n\t\t},\n\n\t\tpose: function () {\n\n\t\t\tvar bone, i, il;\n\n\t\t\t// recover the bind-time world matrices\n\n\t\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tbone = this.bones[ i ];\n\n\t\t\t\tif ( bone ) {\n\n\t\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// compute the local matrices, positions, rotations and scales\n\n\t\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tbone = this.bones[ i ];\n\n\t\t\t\tif ( bone ) {\n\n\t\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdate: ( function () {\n\n\t\t\tvar offsetMatrix = new Matrix4();\n\t\t\tvar identityMatrix = new Matrix4();\n\n\t\t\treturn function update() {\n\n\t\t\t\tvar bones = this.bones;\n\t\t\t\tvar boneInverses = this.boneInverses;\n\t\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t\t// flatten bone matrices to array\n\n\t\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tclone: function () {\n\n\t\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author ikerr / http://verold.com\n\t */\n\n\tfunction Bone() {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n\tBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Bone,\n\n\t\tisBone: true\n\n\t} );\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author ikerr / http://verold.com\n\t */\n\n\tfunction SkinnedMesh( geometry, material ) {\n\n\t\tMesh.call( this, 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\tvar bones = this.initBones();\n\t\tvar skeleton = new Skeleton( bones );\n\n\t\tthis.bind( skeleton, this.matrixWorld );\n\n\t\tthis.normalizeSkinWeights();\n\n\t}\n\n\tSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\t\tconstructor: SkinnedMesh,\n\n\t\tisSkinnedMesh: true,\n\n\t\tinitBones: function () {\n\n\t\t\tvar bones = [], bone, gbone;\n\t\t\tvar i, il;\n\n\t\t\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\t\t\t// first, create array of 'Bone' objects from geometry data\n\n\t\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\t\t// create new 'Bone' object\n\n\t\t\t\t\tbone = new Bone();\n\t\t\t\t\tbones.push( bone );\n\n\t\t\t\t\t// apply values\n\n\t\t\t\t\tbone.name = gbone.name;\n\t\t\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t\t\t}\n\n\t\t\t\t// second, create bone hierarchy\n\n\t\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\t\tif ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) {\n\n\t\t\t\t\t\t// subsequent bones in the hierarchy\n\n\t\t\t\t\t\tbones[ gbone.parent ].add( bones[ i ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// topmost bone, immediate child of the skinned mesh\n\n\t\t\t\t\t\tthis.add( bones[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// now the bones are part of the scene graph and children of the skinned mesh.\n\t\t\t// let's update the corresponding matrices\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\treturn bones;\n\n\t\t},\n\n\t\tbind: function ( skeleton, bindMatrix ) {\n\n\t\t\tthis.skeleton = skeleton;\n\n\t\t\tif ( bindMatrix === undefined ) {\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t\t}\n\n\t\t\tthis.bindMatrix.copy( bindMatrix );\n\t\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t\t},\n\n\t\tpose: function () {\n\n\t\t\tthis.skeleton.pose();\n\n\t\t},\n\n\t\tnormalizeSkinWeights: function () {\n\n\t\t\tvar scale, i;\n\n\t\t\tif ( this.geometry && this.geometry.isGeometry ) {\n\n\t\t\t\tfor ( i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\t\tscale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( this.geometry && this.geometry.isBufferGeometry ) {\n\n\t\t\t\tvar vec = new Vector4();\n\n\t\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\t\tfor ( i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\t\tscale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t\t}\n\n\t\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdateMatrixWorld: function ( force ) {\n\n\t\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  linewidth: <float>,\n\t *  linecap: \"round\",\n\t *  linejoin: \"round\"\n\t * }\n\t */\n\n\tfunction LineBasicMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tLineBasicMaterial.prototype = Object.create( Material.prototype );\n\tLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\n\tLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\n\tLineBasicMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Line( geometry, material, mode ) {\n\n\t\tif ( mode === 1 ) {\n\n\t\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\t\treturn new LineSegments( geometry, material );\n\n\t\t}\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\t}\n\n\tLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Line,\n\n\t\tisLine: true,\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new Matrix4();\n\t\t\tvar ray = new Ray();\n\t\t\tvar sphere = new Sphere();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar precision = raycaster.linePrecision;\n\t\t\t\tvar precisionSq = precision * precision;\n\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\tvar vStart = new Vector3();\n\t\t\t\tvar vEnd = new Vector3();\n\t\t\t\tvar interSegment = new Vector3();\n\t\t\t\tvar interRay = new Vector3();\n\t\t\t\tvar step = (this && this.isLineSegments) ? 2 : 1;\n\n\t\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\t\tdistance: distance,\n\t\t\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\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\t\tobject: this\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 {\n\n\t\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\t\tdistance: distance,\n\t\t\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\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\t\tobject: this\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 if ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\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\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\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\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction LineSegments( geometry, material ) {\n\n\t\tLine.call( this, geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\t\tconstructor: LineSegments,\n\n\t\tisLineSegments: true\n\n\t} );\n\n\t/**\n\t * @author mgreter / http://github.com/mgreter\n\t */\n\n\tfunction LineLoop( geometry, material ) {\n\n\t\tLine.call( this, geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n\tLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\t\tconstructor: LineLoop,\n\n\t\tisLineLoop: true,\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  size: <float>,\n\t *  sizeAttenuation: <bool>\n\t * }\n\t */\n\n\tfunction PointsMaterial( parameters ) {\n\n\t\tMaterial.call( this );\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tPointsMaterial.prototype = Object.create( Material.prototype );\n\tPointsMaterial.prototype.constructor = PointsMaterial;\n\n\tPointsMaterial.prototype.isPointsMaterial = true;\n\n\tPointsMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Points( geometry, material ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n\t}\n\n\tPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Points,\n\n\t\tisPoints: true,\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new Matrix4();\n\t\t\tvar ray = new Ray();\n\t\t\tvar sphere = new Sphere();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar object = this;\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\t\tsphere.radius += threshold;\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\t\tvar position = new Vector3();\n\n\t\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\t\ttestPoint( position, 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\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\ttestPoint( vertices[ i ], 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\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Group() {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Group';\n\n\t}\n\n\tGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Group\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.generateMipmaps = false;\n\n\t\tvar scope = this;\n\n\t\tfunction update() {\n\n\t\t\trequestAnimationFrame( update );\n\n\t\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\t\tscope.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tupdate();\n\n\t}\n\n\tVideoTexture.prototype = Object.create( Texture.prototype );\n\tVideoTexture.prototype.constructor = VideoTexture;\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tTexture.call( this, 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\tCompressedTexture.prototype = Object.create( Texture.prototype );\n\tCompressedTexture.prototype.constructor = CompressedTexture;\n\n\tCompressedTexture.prototype.isCompressedTexture = true;\n\n\t/**\n\t * @author Matt DesLauriers / @mattdesl\n\t * @author atix / arthursilber.de\n\t */\n\n\tfunction DepthTexture( 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\tTexture.call( this, 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\tDepthTexture.prototype = Object.create( Texture.prototype );\n\tDepthTexture.prototype.constructor = DepthTexture;\n\tDepthTexture.prototype.isDepthTexture = true;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tfunction WireframeGeometry( geometry ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\t// buffer\n\n\t\tvar vertices = [];\n\n\t\t// helper variables\n\n\t\tvar i, j, l, o, ol;\n\t\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\t\tvar key, keys = [ 'a', 'b', 'c' ];\n\t\tvar vertex;\n\n\t\t// different logic for Geometry and BufferGeometry\n\n\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\tvar faces = geometry.faces;\n\n\t\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\tvar position, indices, groups;\n\t\t\tvar group, start, count;\n\t\t\tvar index1, index2;\n\n\t\t\tvertex = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tposition = geometry.attributes.position;\n\t\t\t\tindices = geometry.index;\n\t\t\t\tgroups = 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 ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\t\tstart = group.start;\n\t\t\t\t\tcount = group.count;\n\n\t\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\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\t// generate vertices\n\n\t\t\t\tfor ( key in edges ) {\n\n\t\t\t\t\te = edges[ key ];\n\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tposition = geometry.attributes.position;\n\n\t\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( 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\tindex1 = 3 * i + j;\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n\tWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n\t/**\n\t * @author zz85 / https://github.com/zz85\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t * Parametric Surfaces Geometry\n\t * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n\t */\n\n\t// ParametricGeometry\n\n\tfunction ParametricGeometry( func, slices, stacks ) {\n\n\t\tGeometry.call( this );\n\n\t\tthis.type = 'ParametricGeometry';\n\n\t\tthis.parameters = {\n\t\t\tfunc: func,\n\t\t\tslices: slices,\n\t\t\tstacks: stacks\n\t\t};\n\n\t\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tParametricGeometry.prototype = Object.create( Geometry.prototype );\n\tParametricGeometry.prototype.constructor = ParametricGeometry;\n\n\t// ParametricBufferGeometry\n\n\tfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'ParametricBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tfunc: func,\n\t\t\tslices: slices,\n\t\t\tstacks: stacks\n\t\t};\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\tvar EPS = 0.00001;\n\n\t\tvar normal = new Vector3();\n\n\t\tvar p0 = new Vector3(), p1 = new Vector3();\n\t\tvar pu = new Vector3(), pv = new Vector3();\n\n\t\tvar i, j;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tvar sliceCount = slices + 1;\n\n\t\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\t\tvar v = i / stacks;\n\n\t\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\t\tvar u = j / slices;\n\n\t\t\t\t// vertex\n\n\t\t\t\tp0 = func( u, v, p0 );\n\t\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t\t// normal\n\n\t\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\t\tp1 = func( u - EPS, v, p1 );\n\t\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp1 = func( u + EPS, v, p1 );\n\t\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\t\tp1 = func( u, v - EPS, p1 );\n\t\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp1 = func( u, v + EPS, p1 );\n\t\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t\t}\n\n\t\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\t\tnormal.crossVectors( pu, pv ).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, v );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\t\tvar a = i * sliceCount + j;\n\t\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t\t// faces one and two\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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n\t/**\n\t * @author clockworkgeek / https://github.com/clockworkgeek\n\t * @author timothypratley / https://github.com/timothypratley\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// PolyhedronGeometry\n\n\tfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\n\tPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n\t// PolyhedronBufferGeometry\n\n\tfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'PolyhedronBufferGeometry';\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\tradius = radius || 1;\n\t\tdetail = detail || 0;\n\n\t\t// default buffer data\n\n\t\tvar vertexBuffer = [];\n\t\tvar 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\tappplyRadius( 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.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.addAttribute( '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\tvar a = new Vector3();\n\t\t\tvar b = new Vector3();\n\t\t\tvar 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 ( var 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\tvar cols = Math.pow( 2, detail );\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tvar v = [];\n\n\t\t\tvar i, j;\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tvar rows = cols - i;\n\n\t\t\t\tfor ( 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 ( i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tvar 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 appplyRadius( radius ) {\n\n\t\t\tvar 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 ( var 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\tvar vertex = new Vector3();\n\n\t\t\tfor ( var 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\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tvar 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 ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\t\tvar 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\tvar 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\tvar a = new Vector3();\n\t\t\tvar b = new Vector3();\n\t\t\tvar c = new Vector3();\n\n\t\t\tvar centroid = new Vector3();\n\n\t\t\tvar uvA = new Vector2();\n\t\t\tvar uvB = new Vector2();\n\t\t\tvar uvC = new Vector2();\n\n\t\t\tfor ( var 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\tvar 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\tPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// TetrahedronGeometry\n\n\tfunction TetrahedronGeometry( radius, detail ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\n\tTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n\t// TetrahedronBufferGeometry\n\n\tfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\t\tvar vertices = [\n\t\t\t1,  1,  1,   - 1, - 1,  1,   - 1,  1, - 1,    1, - 1, - 1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t2,  1,  0,    0,  3,  2,    1,  3,  0,    2,  3,  1\n\t\t];\n\n\t\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\n\tTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// OctahedronGeometry\n\n\tfunction OctahedronGeometry( radius, detail ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tOctahedronGeometry.prototype = Object.create( Geometry.prototype );\n\tOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n\t// OctahedronBufferGeometry\n\n\tfunction OctahedronBufferGeometry( radius, detail ) {\n\n\t\tvar vertices = [\n\t\t\t1, 0, 0,   - 1, 0, 0,    0, 1, 0,    0, - 1, 0,    0, 0, 1,    0, 0, - 1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t0, 2, 4,    0, 4, 3,    0, 3, 5,    0, 5, 2,    1, 2, 5,    1, 5, 3,    1, 3, 4,    1, 4, 2\n\t\t];\n\n\t\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\n\tOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// IcosahedronGeometry\n\n\tfunction IcosahedronGeometry( radius, detail ) {\n\n\t \tGeometry.call( this );\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\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\n\tIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n\t// IcosahedronBufferGeometry\n\n\tfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\t\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tvar vertices = [\n\t\t\t- 1,  t,  0,    1,  t,  0,   - 1, - t,  0,    1, - t,  0,\n\t\t\t 0, - 1,  t,    0,  1,  t,    0, - 1, - t,    0,  1, - t,\n\t\t\t t,  0, - 1,    t,  0,  1,   - t,  0, - 1,   - t,  0,  1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t 0, 11,  5,    0,  5,  1,    0,  1,  7,    0,  7, 10,    0, 10, 11,\n\t\t\t 1,  5,  9,    5, 11,  4,   11, 10,  2,   10,  7,  6,    7,  1,  8,\n\t\t\t 3,  9,  4,    3,  4,  2,    3,  2,  6,    3,  6,  8,    3,  8,  9,\n\t\t\t 4,  9,  5,    2,  4, 11,    6,  2, 10,    8,  6,  7,    9,  8,  1\n\t\t];\n\n\t\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\n\tIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n\t/**\n\t * @author Abe Pazos / https://hamoid.com\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// DodecahedronGeometry\n\n\tfunction DodecahedronGeometry( radius, detail ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\n\tDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n\t// DodecahedronBufferGeometry\n\n\tfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\t\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tvar r = 1 / t;\n\n\t\tvar vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,    - 1, - 1,  1,\n\t\t\t- 1,  1, - 1,    - 1,  1,  1,\n\t\t\t  1, - 1, - 1,     1, - 1,  1,\n\t\t\t  1,  1, - 1,     1,  1,  1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t 0, - r, - t,     0, - r,  t,\n\t\t\t 0,  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\t r, - 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\tvar indices = [\n\t\t\t 3, 11,  7,      3,  7, 15,      3, 15, 13,\n\t\t\t 7, 19, 17,      7, 17,  6,      7,  6, 15,\n\t\t\t17,  4,  8,     17,  8, 10,     17, 10,  6,\n\t\t\t 8,  0, 16,      8, 16,  2,      8,  2, 10,\n\t\t\t 0, 12,  1,      0,  1, 18,      0, 18, 16,\n\t\t\t 6, 10,  2,      6,  2, 13,      6, 13, 15,\n\t\t\t 2, 16, 18,      2, 18,  3,      2,  3, 13,\n\t\t\t18,  1,  9,     18,  9, 11,     18, 11,  3,\n\t\t\t 4, 14, 12,      4, 12,  0,      4,  0,  8,\n\t\t\t11,  9,  5,     11,  5, 19,     11, 19,  7,\n\t\t\t19,  5, 14,     19, 14,  4,     19,  4, 17,\n\t\t\t 1, 12, 14,      1, 14,  5,      1,  5,  9\n\t\t];\n\n\t\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\n\tDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n\t/**\n\t * @author oosmoxiecode / https://github.com/oosmoxiecode\n\t * @author WestLangley / https://github.com/WestLangley\n\t * @author zz85 / https://github.com/zz85\n\t * @author miningold / https://github.com/miningold\n\t * @author jonobr1 / https://github.com/jonobr1\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t */\n\n\t// TubeGeometry\n\n\tfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\t\tGeometry.call( this );\n\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\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\t\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = bufferGeometry.tangents;\n\t\tthis.normals = bufferGeometry.normals;\n\t\tthis.binormals = bufferGeometry.binormals;\n\n\t\t// create geometry\n\n\t\tthis.fromBufferGeometry( bufferGeometry );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tTubeGeometry.prototype = Object.create( Geometry.prototype );\n\tTubeGeometry.prototype.constructor = TubeGeometry;\n\n\t// TubeBufferGeometry\n\n\tfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'TubeBufferGeometry';\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\ttubularSegments = tubularSegments || 64;\n\t\tradius = radius || 1;\n\t\tradialSegments = radialSegments || 8;\n\t\tclosed = closed || false;\n\n\t\tvar 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\tvar vertex = new Vector3();\n\t\tvar normal = new Vector3();\n\t\tvar uv = new Vector2();\n\n\t\tvar i, j;\n\n\t\t// buffer\n\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( 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\tvar P = path.getPointAt( i / tubularSegments );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tvar N = frames.normals[ i ];\n\t\t\tvar B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tvar sin =   Math.sin( v );\n\t\t\t\tvar 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 ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tvar 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 ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( 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\tTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n\t/**\n\t * @author oosmoxiecode\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t * based on http://www.blackpawn.com/texts/pqtorus/\n\t */\n\n\t// TorusKnotGeometry\n\n\tfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\t\tGeometry.call( this );\n\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\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\t\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\n\tTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n\t// TorusKnotBufferGeometry\n\n\tfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'TorusKnotBufferGeometry';\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\tradius = radius || 100;\n\t\ttube = tube || 40;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\tp = p || 2;\n\t\tq = q || 3;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar i, j;\n\n\t\tvar vertex = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\tvar P1 = new Vector3();\n\t\tvar P2 = new Vector3();\n\n\t\tvar B = new Vector3();\n\t\tvar T = new Vector3();\n\t\tvar N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( 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\tvar 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 ( 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\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\t\tvar 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 ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( '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\tvar cu = Math.cos( u );\n\t\t\tvar su = Math.sin( u );\n\t\t\tvar quOverP = q / p * u;\n\t\t\tvar 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\tTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n\t/**\n\t * @author oosmoxiecode\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// TorusGeometry\n\n\tfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tGeometry.call( this );\n\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\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tTorusGeometry.prototype = Object.create( Geometry.prototype );\n\tTorusGeometry.prototype.constructor = TorusGeometry;\n\n\t// TorusBufferGeometry\n\n\tfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'TorusBufferGeometry';\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\tradius = radius || 100;\n\t\ttube = tube || 40;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\t\tarc = arc || Math.PI * 2;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar center = new Vector3();\n\t\tvar vertex = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\tvar j, i;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tvar u = i / tubularSegments * arc;\n\t\t\t\tvar 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 ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t */\n\n\tvar ShapeUtils = {\n\n\t\t// calculate area of the contour polygon\n\n\t\tarea: function ( contour ) {\n\n\t\t\tvar n = contour.length;\n\t\t\tvar a = 0.0;\n\n\t\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t\t}\n\n\t\t\treturn a * 0.5;\n\n\t\t},\n\n\t\ttriangulate: ( function () {\n\n\t\t\t/**\n\t\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t\t * flipcode.com by John W. Ratcliff  // July 22, 2000\n\t\t\t * See original code and more information here:\n\t\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t\t *\n\t\t\t * ported to actionscript by Zevan Rosser\n\t\t\t * www.actionsnippet.com\n\t\t\t *\n\t\t\t * ported to javascript by Joshua Koo\n\t\t\t * http://www.lab4games.net/zz85/blog\n\t\t\t *\n\t\t\t */\n\n\t\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\t\tvar p;\n\t\t\t\tvar ax, ay, bx, by;\n\t\t\t\tvar cx, cy, px, py;\n\n\t\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\t\tif ( ( bx - ax ) * ( cy - ay ) - ( by - ay ) * ( cx - ax ) <= 0 ) return false;\n\n\t\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\t\taX = cx - bx;  aY = cy - by;\n\t\t\t\tbX = ax - cx;  bY = ay - cy;\n\t\t\t\tcX = bx - ax;  cY = by - ay;\n\n\t\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\t\tapx = px - ax;  apy = py - ay;\n\t\t\t\t\tbpx = px - bx;  bpy = py - by;\n\t\t\t\t\tcpx = px - cx;  cpy = py - cy;\n\n\t\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// takes in an contour array and returns\n\n\t\t\treturn function triangulate( contour, indices ) {\n\n\t\t\t\tvar n = contour.length;\n\n\t\t\t\tif ( n < 3 ) return null;\n\n\t\t\t\tvar result = [],\n\t\t\t\t\tverts = [],\n\t\t\t\t\tvertIndices = [];\n\n\t\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\t\tvar u, v, w;\n\n\t\t\t\tif ( ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t\t}\n\n\t\t\t\tvar nv = n;\n\n\t\t\t\t/*  remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\t\tvar count = 2 * nv;   /* error detection */\n\n\t\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t\t//return null;\n\t\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t/* three consecutive vertices in current polygon, <u,v,w> */\n\n\t\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0;     /* previous */\n\t\t\t\t\tv = u + 1;  if ( nv <= v ) v = 0;     /* new v    */\n\t\t\t\t\tw = v + 1;  if ( nv <= w ) w = 0;     /* next     */\n\n\t\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnv --;\n\n\t\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\ttriangulateShape: function ( contour, holes ) {\n\n\t\t\tfunction removeDupEndPts(points) {\n\n\t\t\t\tvar l = points.length;\n\n\t\t\t\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\t\tpoints.pop();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tremoveDupEndPts( contour );\n\t\t\tholes.forEach( removeDupEndPts );\n\n\t\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x,   seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x,   seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\n\t\t\t\t\tvar perpSeg2;\n\t\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t\t}\n\t\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t\t// return real intersection point\n\t\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t\t// they are collinear or degenerate\n\t\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t\t// both segments are points\n\t\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct  points\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];                 \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t\t}\n\t\t\t\t\t// segment#1  is a single point\n\t\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t\t}\n\t\t\t\t\t// segment#2  is a single point\n\t\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\t\tif ( seg1maxVal <  seg2minVal )\treturn [];\n\t\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( seg1minVal >  seg2maxVal )\treturn [];\n\t\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t\t// The order of legs is important\n\n\t\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x,  legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x,  legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x,  otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t\t// angle != 180 deg.\n\n\t\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// angle == 180 deg.\n\t\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle  );\n\t\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\t\tvar hole;\n\n\t\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t\t// checks for intersections with shape edges\n\t\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\tvar indepHoles = [];\n\n\t\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t\t// checks for intersections with hole edges\n\t\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ] ];\n\t\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\t\tshapePt, holePt,\n\t\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tindepHoles.push( h );\n\n\t\t\t\t}\n\n\t\t\t\tvar minShapeIndex = 0;\n\t\t\t\tvar counter = indepHoles.length * 2;\n\t\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\t\tcounter --;\n\t\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\t\tconsole.log( 'THREE.ShapeUtils: Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!' );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t\t// which can be connected without intersections\n\t\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\t\tcutKey = shapePt.x + ':' + shapePt.y + ':' + holeIdx;\n\t\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t\t}\n\n\n\t\t\tvar i, il, f, face,\n\t\t\t\tkey, index,\n\t\t\t\tallPointsMap = {};\n\n\t\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\t\tvar allpoints = contour.concat();\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t\t}\n\n\t\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t\t// prepare all points map\n\n\t\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\t\tkey = allpoints[ i ].x + ':' + allpoints[ i ].y;\n\n\t\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Duplicate point', key, i );\n\n\t\t\t\t}\n\n\t\t\t\tallPointsMap[ key ] = i;\n\n\t\t\t}\n\n\t\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\t\tvar triangles = ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t\t// check all face vertices against all points map\n\n\t\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\t\tface = triangles[ i ];\n\n\t\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\t\tkey = face[ f ].x + ':' + face[ f ].y;\n\n\t\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn triangles.concat();\n\n\t\t},\n\n\t\tisClockWise: function ( pts ) {\n\n\t\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t\t}\n\n\t};\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t *\n\t * Creates extruded geometry from a path shape.\n\t *\n\t * parameters = {\n\t *\n\t *  curveSegments: <int>, // number of points on the curves\n\t *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n\t *  amount: <int>, // Depth to extrude the shape\n\t *\n\t *  bevelEnabled: <bool>, // turn on bevel\n\t *  bevelThickness: <float>, // how deep into the original shape bevel goes\n\t *  bevelSize: <float>, // how far from shape outline is bevel\n\t *  bevelSegments: <int>, // number of bevel layers\n\t *\n\t *  extrudePath: <THREE.Curve> // curve to extrude shape along\n\t *  frames: <Object> // containing arrays of tangents, normals, binormals\n\t *\n\t *  UVGenerator: <Object> // object that provides UV generator functions\n\t *\n\t * }\n\t */\n\n\t// ExtrudeGeometry\n\n\tfunction ExtrudeGeometry( shapes, options ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tExtrudeGeometry.prototype = Object.create( Geometry.prototype );\n\tExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\n\t// ExtrudeBufferGeometry\n\n\tfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\t\tif ( typeof ( shapes ) === \"undefined\" ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'ExtrudeBufferGeometry';\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tthis.addShapeList( shapes, options );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// can't really use automatic vertex normals\n\t\t// as then front and back sides get smoothed too\n\t\t// should do separate smoothing just for sides\n\n\t\t//this.computeVertexNormals();\n\n\t\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n\t}\n\n\tExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\n\tExtrudeBufferGeometry.prototype.getArrays = function () {\n\n\t\tvar positionAttribute = this.getAttribute( \"position\" );\n\t\tvar verticesArray = positionAttribute ? Array.prototype.slice.call( positionAttribute.array ) : [];\n\n\t\tvar uvAttribute = this.getAttribute( \"uv\" );\n\t\tvar uvArray = uvAttribute ? Array.prototype.slice.call( uvAttribute.array ) : [];\n\n\t\tvar IndexAttribute = this.index;\n\t\tvar indicesArray = IndexAttribute ? Array.prototype.slice.call( IndexAttribute.array ) : [];\n\n\t\treturn {\n\t\t\tposition: verticesArray,\n\t\t\tuv: uvArray,\n\t\t\tindex: indicesArray\n\t\t};\n\n\t};\n\n\tExtrudeBufferGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\t\tvar sl = shapes.length;\n\t\toptions.arrays = this.getArrays();\n\n\t\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\t\tvar shape = shapes[ s ];\n\t\t\tthis.addShape( shape, options );\n\n\t\t}\n\n\t\tthis.setIndex( options.arrays.index );\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( options.arrays.position, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) );\n\n\t};\n\n\tExtrudeBufferGeometry.prototype.addShape = function ( shape, options ) {\n\n\t\tvar arrays = options.arrays ? options.arrays : this.getArrays();\n\t\tvar verticesArray = arrays.position;\n\t\tvar indicesArray = arrays.index;\n\t\tvar uvArray = arrays.uv;\n\n\t\tvar placeholder = [];\n\n\n\t\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\t\tvar extrudePath = options.extrudePath;\n\t\tvar extrudePts, extrudeByPath = false;\n\n\t\t// Use default WorldUVGenerator if no UV generators are specified.\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\n\n\t\tvar splineTube, binormal, normal, position2;\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\t\tvar scope = this;\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t//  but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t//  (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t/////  Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length/3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length/3 -start, options.material !== undefined ? options.material : 0);\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length/3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length/3 -start, options.extrudeMaterial !== undefined ? options.extrudeMaterial : 1);\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tindicesArray.push( verticesArray.length / 3 );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t\tif ( ! options.arrays ) {\n\n\t\t\tthis.setIndex( indicesArray );\n\t\t\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) );\n\n\t\t}\n\n\t};\n\n\tExtrudeGeometry.WorldUVGenerator = {\n\n\t\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\t\tvar a_x = vertices[ indexA * 3 ];\n\t\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\t\tvar b_x = vertices[ indexB * 3 ];\n\t\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\t\tvar c_x = vertices[ indexC * 3 ];\n\t\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, a_y ),\n\t\t\t\tnew Vector2( b_x, b_y ),\n\t\t\t\tnew Vector2( c_x, c_y )\n\t\t\t];\n\n\t\t},\n\n\t\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\t\tvar a_x = vertices[ indexA * 3 ];\n\t\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\t\tvar b_x = vertices[ indexB * 3 ];\n\t\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\t\tvar c_x = vertices[ indexC * 3 ];\n\t\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\t\tvar d_x = vertices[ indexD * 3 ];\n\t\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\t\treturn [\n\t\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t\t];\n\n\t\t\t} else {\n\n\t\t\t\treturn [\n\t\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t\t];\n\n\t\t\t}\n\n\t\t}\n\t};\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * Text = 3D Text\n\t *\n\t * parameters = {\n\t *  font: <THREE.Font>, // font\n\t *\n\t *  size: <float>, // size of the text\n\t *  height: <float>, // thickness to extrude text\n\t *  curveSegments: <int>, // number of points on the curves\n\t *\n\t *  bevelEnabled: <bool>, // turn on bevel\n\t *  bevelThickness: <float>, // how deep into text bevel goes\n\t *  bevelSize: <float> // how far from text outline is bevel\n\t * }\n\t */\n\n\t// TextGeometry\n\n\tfunction TextGeometry(  text, parameters ) {\n\n\t\tGeometry.call( this );\n\n\t\tthis.type = 'TextGeometry';\n\n\t\tthis.parameters = {\n\t\t\ttext: text,\n\t\t\tparameters: parameters\n\t\t};\n\n\t\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tTextGeometry.prototype = Object.create( Geometry.prototype );\n\tTextGeometry.prototype.constructor = TextGeometry;\n\n\t// TextBufferGeometry\n\n\tfunction TextBufferGeometry( text, parameters ) {\n\n\t\tparameters = parameters || {};\n\n\t\tvar font = parameters.font;\n\n\t\tif ( ! ( font && font.isFont ) ) {\n\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\t\treturn new Geometry();\n\n\t\t}\n\n\t\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t\t// translate parameters to ExtrudeGeometry API\n\n\t\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t\t// defaults\n\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\t\tthis.type = 'TextBufferGeometry';\n\n\t}\n\n\tTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\n\tTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// SphereGeometry\n\n\tfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tGeometry.call( this );\n\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\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tSphereGeometry.prototype = Object.create( Geometry.prototype );\n\tSphereGeometry.prototype.constructor = SphereGeometry;\n\n\t// SphereBufferGeometry\n\n\tfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'SphereBufferGeometry';\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\tradius = radius || 50;\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\t\tphiStart = phiStart !== undefined ? phiStart : 0;\n\t\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\t\tvar thetaEnd = thetaStart + thetaLength;\n\n\t\tvar ix, iy;\n\n\t\tvar index = 0;\n\t\tvar grid = [];\n\n\t\tvar vertex = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tvar verticesRow = [];\n\n\t\t\tvar v = iy / heightSegments;\n\n\t\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tvar 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.set( vertex.x, vertex.y, vertex.z ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\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 ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n\t/**\n\t * @author Kaleb Murphy\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// RingGeometry\n\n\tfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tRingGeometry.prototype = Object.create( Geometry.prototype );\n\tRingGeometry.prototype.constructor = RingGeometry;\n\n\t// RingBufferGeometry\n\n\tfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'RingBufferGeometry';\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\tinnerRadius = innerRadius || 20;\n\t\touterRadius = outerRadius || 50;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\t\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// some helper variables\n\n\t\tvar segment;\n\t\tvar radius = innerRadius;\n\t\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tvar vertex = new Vector3();\n\t\tvar uv = new Vector2();\n\t\tvar j, i;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( 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\tsegment = 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 ( j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t\tvar a = segment;\n\t\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n\t/**\n\t * @author astrodud / http://astrodud.isgreat.org/\n\t * @author zz85 / https://github.com/zz85\n\t * @author bhouston / http://clara.io\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// LatheGeometry\n\n\tfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tLatheGeometry.prototype = Object.create( Geometry.prototype );\n\tLatheGeometry.prototype.constructor = LatheGeometry;\n\n\t// LatheBufferGeometry\n\n\tfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'LatheBufferGeometry';\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 ) || 12;\n\t\tphiStart = phiStart || 0;\n\t\tphiLength = phiLength || Math.PI * 2;\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar base;\n\t\tvar inverseSegments = 1.0 / segments;\n\t\tvar vertex = new Vector3();\n\t\tvar uv = new Vector2();\n\t\tvar i, j;\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tvar sin = Math.sin( phi );\n\t\t\tvar cos = Math.cos( phi );\n\n\t\t\tfor ( 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 ( i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tbase = j + i * points.length;\n\n\t\t\t\tvar a = base;\n\t\t\t\tvar b = base + points.length;\n\t\t\t\tvar c = base + points.length + 1;\n\t\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( '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\tvar normals = this.attributes.normal.array;\n\t\t\tvar n1 = new Vector3();\n\t\t\tvar n2 = new Vector3();\n\t\t\tvar n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tbase = segments * points.length * 3;\n\n\t\t\tfor ( 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\tLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n\t/**\n\t * @author jonobr1 / http://jonobr1.com\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// ShapeGeometry\n\n\tfunction ShapeGeometry( shapes, curveSegments ) {\n\n\t\tGeometry.call( this );\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tif ( typeof curveSegments === 'object' ) {\n\n\t\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\t\tcurveSegments = curveSegments.curveSegments;\n\n\t\t}\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tShapeGeometry.prototype = Object.create( Geometry.prototype );\n\tShapeGeometry.prototype.constructor = ShapeGeometry;\n\n\t// ShapeBufferGeometry\n\n\tfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'ShapeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\tcurveSegments = curveSegments || 12;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar groupStart = 0;\n\t\tvar 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 ( var 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tvar i, l, shapeHole;\n\n\t\t\tvar indexOffset = vertices.length / 3;\n\t\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\t\tvar shapeVertices = points.shape;\n\t\t\tvar 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\t// also check if holes are in the opposite direction\n\n\t\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar 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 ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = 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 ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tvar 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 ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\t\tvar 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\tShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t\t// buffer\n\n\t\tvar vertices = [];\n\n\t\t// helper variables\n\n\t\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\t\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\t\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t\t// prepare source geometry\n\n\t\tvar geometry2;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tgeometry2 = new Geometry();\n\t\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t\t} else {\n\n\t\t\tgeometry2 = geometry.clone();\n\n\t\t}\n\n\t\tgeometry2.mergeVertices();\n\t\tgeometry2.computeFaceNormals();\n\n\t\tvar sourceVertices = geometry2.vertices;\n\t\tvar faces = geometry2.faces;\n\n\t\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t\t} else {\n\n\t\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\tvar e = edges[ key ];\n\n\t\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n\tEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t// CylinderGeometry\n\n\tfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tGeometry.call( this );\n\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\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tCylinderGeometry.prototype = Object.create( Geometry.prototype );\n\tCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n\t// CylinderBufferGeometry\n\n\tfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'CylinderBufferGeometry';\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\tvar scope = this;\n\n\t\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\t\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\t\theight = height !== undefined ? height : 100;\n\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\n\t\topenEnded = openEnded !== undefined ? openEnded : false;\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar index = 0;\n\t\tvar indexArray = [];\n\t\tvar halfHeight = height / 2;\n\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tvar x, y;\n\t\t\tvar normal = new Vector3();\n\t\t\tvar vertex = new Vector3();\n\n\t\t\tvar groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tvar indexRow = [];\n\n\t\t\t\tvar v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\t\tvar 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 ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( 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\tvar a = indexArray[ y ][ x ];\n\t\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tvar 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\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\t\tvar uv = new Vector2();\n\t\t\tvar vertex = new Vector3();\n\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// save the index of the first center vertex\n\t\t\tcenterIndexStart = index;\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 ( 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\n\t\t\tcenterIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\t\tvar 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 ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tvar c = centerIndexStart + x;\n\t\t\t\tvar 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\tCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n\t/**\n\t * @author abelnation / http://github.com/abelnation\n\t */\n\n\t// ConeGeometry\n\n\tfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tCylinderGeometry.call( this, 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\tConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\n\tConeGeometry.prototype.constructor = ConeGeometry;\n\n\t// ConeBufferGeometry\n\n\tfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeBufferGeometry';\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\tConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\n\tConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t * @author Mugen87 / https://github.com/Mugen87\n\t * @author hughes\n\t */\n\n\t// CircleGeometry\n\n\tfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\t\tGeometry.call( this );\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\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\tCircleGeometry.prototype = Object.create( Geometry.prototype );\n\tCircleGeometry.prototype.constructor = CircleGeometry;\n\n\t// CircleBufferGeometry\n\n\tfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'CircleBufferGeometry';\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\tradius = radius || 50;\n\t\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar i, s;\n\t\tvar vertex = new Vector3();\n\t\tvar 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 ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tvar 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 ( 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\n\tCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\n\tvar Geometries = Object.freeze({\n\t\tWireframeGeometry: WireframeGeometry,\n\t\tParametricGeometry: ParametricGeometry,\n\t\tParametricBufferGeometry: ParametricBufferGeometry,\n\t\tTetrahedronGeometry: TetrahedronGeometry,\n\t\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\t\tOctahedronGeometry: OctahedronGeometry,\n\t\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\t\tIcosahedronGeometry: IcosahedronGeometry,\n\t\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\t\tDodecahedronGeometry: DodecahedronGeometry,\n\t\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\t\tPolyhedronGeometry: PolyhedronGeometry,\n\t\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\t\tTubeGeometry: TubeGeometry,\n\t\tTubeBufferGeometry: TubeBufferGeometry,\n\t\tTorusKnotGeometry: TorusKnotGeometry,\n\t\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\t\tTorusGeometry: TorusGeometry,\n\t\tTorusBufferGeometry: TorusBufferGeometry,\n\t\tTextGeometry: TextGeometry,\n\t\tTextBufferGeometry: TextBufferGeometry,\n\t\tSphereGeometry: SphereGeometry,\n\t\tSphereBufferGeometry: SphereBufferGeometry,\n\t\tRingGeometry: RingGeometry,\n\t\tRingBufferGeometry: RingBufferGeometry,\n\t\tPlaneGeometry: PlaneGeometry,\n\t\tPlaneBufferGeometry: PlaneBufferGeometry,\n\t\tLatheGeometry: LatheGeometry,\n\t\tLatheBufferGeometry: LatheBufferGeometry,\n\t\tShapeGeometry: ShapeGeometry,\n\t\tShapeBufferGeometry: ShapeBufferGeometry,\n\t\tExtrudeGeometry: ExtrudeGeometry,\n\t\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\t\tEdgesGeometry: EdgesGeometry,\n\t\tConeGeometry: ConeGeometry,\n\t\tConeBufferGeometry: ConeBufferGeometry,\n\t\tCylinderGeometry: CylinderGeometry,\n\t\tCylinderBufferGeometry: CylinderBufferGeometry,\n\t\tCircleGeometry: CircleGeometry,\n\t\tCircleBufferGeometry: CircleBufferGeometry,\n\t\tBoxGeometry: BoxGeometry,\n\t\tBoxBufferGeometry: BoxBufferGeometry\n\t});\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t *\n\t * parameters = {\n\t *  color: <THREE.Color>,\n\t *  opacity: <float>\n\t * }\n\t */\n\n\tfunction ShadowMaterial( parameters ) {\n\n\t\tMaterial.call( this );\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.opacity = 1.0;\n\n\t\tthis.lights = true;\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tShadowMaterial.prototype = Object.create( Material.prototype );\n\tShadowMaterial.prototype.constructor = ShadowMaterial;\n\n\tShadowMaterial.prototype.isShadowMaterial = true;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction RawShaderMaterial( parameters ) {\n\n\t\tShaderMaterial.call( this, parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n\tRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\n\tRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\n\tRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  roughness: <float>,\n\t *  metalness: <float>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  bumpMap: new THREE.Texture( <Image> ),\n\t *  bumpScale: <float>,\n\t *\n\t *  normalMap: new THREE.Texture( <Image> ),\n\t *  normalScale: <Vector2>,\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  roughnessMap: new THREE.Texture( <Image> ),\n\t *\n\t *  metalnessMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *  envMapIntensity: <float>\n\t *\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tfunction MeshStandardMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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 = 0.5;\n\t\tthis.metalness = 0.5;\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.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.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshStandardMaterial.prototype = Object.create( Material.prototype );\n\tMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\n\tMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n\tMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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.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.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *  reflectivity: <float>\n\t * }\n\t */\n\n\tfunction MeshPhysicalMaterial( parameters ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.defines = { 'PHYSICAL': '' };\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\t\tthis.clearCoat = 0.0;\n\t\tthis.clearCoatRoughness = 0.0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\n\tMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n\tMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\t\tthis.defines = { 'PHYSICAL': '' };\n\n\t\tthis.reflectivity = source.reflectivity;\n\n\t\tthis.clearCoat = source.clearCoat;\n\t\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  specular: <hex>,\n\t *  shininess: <float>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  bumpMap: new THREE.Texture( <Image> ),\n\t *  bumpScale: <float>,\n\t *\n\t *  normalMap: new THREE.Texture( <Image> ),\n\t *  normalScale: <Vector2>,\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tfunction MeshPhongMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.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.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshPhongMaterial.prototype = Object.create( Material.prototype );\n\tMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\n\tMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n\tMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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.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.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author takahirox / http://github.com/takahirox\n\t *\n\t * parameters = {\n\t *  gradientMap: new THREE.Texture( <Image> )\n\t * }\n\t */\n\n\tfunction MeshToonMaterial( parameters ) {\n\n\t\tMeshPhongMaterial.call( this );\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.gradientMap = null;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\n\tMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\n\tMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n\tMeshToonMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *  opacity: <float>,\n\t *\n\t *  bumpMap: new THREE.Texture( <Image> ),\n\t *  bumpScale: <float>,\n\t *\n\t *  normalMap: new THREE.Texture( <Image> ),\n\t *  normalScale: <Vector2>,\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tfunction MeshNormalMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.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\t\tthis.lights = false;\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshNormalMaterial.prototype = Object.create( Material.prototype );\n\tMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\n\tMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n\tMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\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.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tfunction MeshLambertMaterial( parameters ) {\n\n\t\tMaterial.call( this );\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.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tMeshLambertMaterial.prototype = Object.create( Material.prototype );\n\tMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\n\tMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n\tMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\t\tMaterial.prototype.copy.call( this, 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\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  linewidth: <float>,\n\t *\n\t *  scale: <float>,\n\t *  dashSize: <float>,\n\t *  gapSize: <float>\n\t * }\n\t */\n\n\tfunction LineDashedMaterial( parameters ) {\n\n\t\tLineBasicMaterial.call( this );\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\tLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\n\tLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\n\tLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\n\tLineDashedMaterial.prototype.copy = function ( source ) {\n\n\t\tLineBasicMaterial.prototype.copy.call( this, 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\n\tvar Materials = Object.freeze({\n\t\tShadowMaterial: ShadowMaterial,\n\t\tSpriteMaterial: SpriteMaterial,\n\t\tRawShaderMaterial: RawShaderMaterial,\n\t\tShaderMaterial: ShaderMaterial,\n\t\tPointsMaterial: PointsMaterial,\n\t\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\t\tMeshStandardMaterial: MeshStandardMaterial,\n\t\tMeshPhongMaterial: MeshPhongMaterial,\n\t\tMeshToonMaterial: MeshToonMaterial,\n\t\tMeshNormalMaterial: MeshNormalMaterial,\n\t\tMeshLambertMaterial: MeshLambertMaterial,\n\t\tMeshDepthMaterial: MeshDepthMaterial,\n\t\tMeshDistanceMaterial: MeshDistanceMaterial,\n\t\tMeshBasicMaterial: MeshBasicMaterial,\n\t\tLineDashedMaterial: LineDashedMaterial,\n\t\tLineBasicMaterial: LineBasicMaterial,\n\t\tMaterial: Material\n\t});\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tvar Cache = {\n\n\t\tenabled: false,\n\n\t\tfiles: {},\n\n\t\tadd: function ( key, file ) {\n\n\t\t\tif ( this.enabled === false ) return;\n\n\t\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\t\tthis.files[ key ] = file;\n\n\t\t},\n\n\t\tget: function ( key ) {\n\n\t\t\tif ( this.enabled === false ) return;\n\n\t\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\t\treturn this.files[ key ];\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete this.files[ key ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tthis.files = {};\n\n\t\t}\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\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}\n\n\tvar DefaultLoadingManager = new LoadingManager();\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction FileLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( FileLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( url === undefined ) url = '';\n\n\t\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\t\tvar scope = this;\n\n\t\t\tvar cached = Cache.get( url );\n\n\t\t\tif ( cached !== undefined ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t\treturn cached;\n\n\t\t\t}\n\n\t\t\t// Check for data: URI\n\t\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\t\tif ( dataUriRegexResult ) {\n\n\t\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\t\tdata = window.decodeURIComponent( data );\n\n\t\t\t\tif ( isBase64 ) data = window.atob( data );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar response;\n\t\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\t \tresponse = new ArrayBuffer( data.length );\n\n\t\t\t\t\t\t\tvar view = new Uint8Array( response );\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\t\tresponse = new Blob( [ response ], { type: mimeType } );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Wait for next browser tick\n\t\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, 0 );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t// Wait for next browser tick\n\t\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t\t}, 0 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar request = new XMLHttpRequest();\n\t\t\t\trequest.open( 'GET', url, true );\n\n\t\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\t\tvar response = event.target.response;\n\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, false );\n\n\t\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\t\tonProgress( event );\n\n\t\t\t\t\t}, false );\n\n\t\t\t\t}\n\n\t\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, false );\n\n\t\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t\t}\n\n\t\t\t\trequest.send( null );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn request;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetResponseType: function ( value ) {\n\n\t\t\tthis.responseType = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetWithCredentials: function ( value ) {\n\n\t\t\tthis.withCredentials = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetMimeType: function ( value ) {\n\n\t\t\tthis.mimeType = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetRequestHeader: function ( value ) {\n\n\t\t\tthis.requestHeader = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t *\n\t * Abstract Base class to block based textures loader (dds, pvr, ...)\n\t */\n\n\tfunction CompressedTextureLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\t// override in sub classes\n\t\tthis._parser = null;\n\n\t}\n\n\tObject.assign( CompressedTextureLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar images = [];\n\n\t\t\tvar texture = new CompressedTexture();\n\t\t\ttexture.image = images;\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tfunction loadTexture( i ) {\n\n\t\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\t\timages[ i ] = {\n\t\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t\t};\n\n\t\t\t\t\tloaded += 1;\n\n\t\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t}\n\n\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\tvar loaded = 0;\n\n\t\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\t\tloadTexture( i );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\t\timages[ f ].height = texDatas.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} else {\n\n\t\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author Nikos M. / https://github.com/foo123/\n\t *\n\t * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n\t */\n\n\tfunction DataTextureLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\t// override in sub classes\n\t\tthis._parser = null;\n\n\t}\n\n\tObject.assign( DataTextureLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar texture = new DataTexture();\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\t\tif ( ! texData ) return;\n\n\t\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\t\ttexture.image = texData.image;\n\n\t\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\t\ttexture.format = texData.format;\n\n\t\t\t\t}\n\t\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\t\ttexture.type = texData.type;\n\n\t\t\t\t}\n\n\t\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t\t}, onProgress, onError );\n\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction ImageLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( ImageLoader.prototype, {\n\n\t\tcrossOrigin: 'Anonymous',\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( url === undefined ) url = '';\n\n\t\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\t\tvar scope = this;\n\n\t\t\tvar cached = Cache.get( url );\n\n\t\t\tif ( cached !== undefined ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t\treturn cached;\n\n\t\t\t}\n\n\t\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\t\timage.addEventListener( 'load', function () {\n\n\t\t\t\tCache.add( url, this );\n\n\t\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\t/*\n\t\t\timage.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tif ( onProgress ) onProgress( event );\n\n\t\t\t}, false );\n\t\t\t*/\n\n\t\t\timage.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t\t}\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\timage.src = url;\n\n\t\t\treturn image;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction CubeTextureLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( CubeTextureLoader.prototype, {\n\n\t\tcrossOrigin: 'Anonymous',\n\n\t\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\t\tvar texture = new CubeTexture();\n\n\t\t\tvar loader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\t\tloader.setPath( this.path );\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfunction loadTexture( i ) {\n\n\t\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\t\tloaded ++;\n\n\t\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, undefined, onError );\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction TextureLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( TextureLoader.prototype, {\n\n\t\tcrossOrigin: 'Anonymous',\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar loader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\t\tloader.setPath( this.path );\n\n\t\t\tvar texture = new Texture();\n\t\t\ttexture.image = loader.load( url, function () {\n\n\t\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\t\tonLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Light( color, intensity ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\t\tthis.receiveShadow = undefined;\n\n\t}\n\n\tLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Light,\n\n\t\tisLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tObject3D.prototype.copy.call( this, source );\n\n\t\t\tthis.color.copy( source.color );\n\t\t\tthis.intensity = source.intensity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.color = this.color.getHex();\n\t\t\tdata.object.intensity = this.intensity;\n\n\t\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\t\tLight.call( this, skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.castShadow = undefined;\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\tHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: HemisphereLight,\n\n\t\tisHemisphereLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tLight.prototype.copy.call( this, source );\n\n\t\t\tthis.groundColor.copy( source.groundColor );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction LightShadow( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.radius = 1;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.matrix = new Matrix4();\n\n\t}\n\n\tObject.assign( LightShadow.prototype, {\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.camera = source.camera.clone();\n\n\t\t\tthis.bias = source.bias;\n\t\t\tthis.radius = source.radius;\n\n\t\t\tthis.mapSize.copy( source.mapSize );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\tvar object = {};\n\n\t\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\t\tdelete object.camera.matrix;\n\n\t\t\treturn object;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction SpotLightShadow() {\n\n\t\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t}\n\n\tSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\t\tconstructor: SpotLightShadow,\n\n\t\tisSpotLightShadow: true,\n\n\t\tupdate: function ( light ) {\n\n\t\t\tvar camera = this.camera;\n\n\t\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\t\tvar far = light.distance || camera.far;\n\n\t\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\t\tcamera.fov = fov;\n\t\t\t\tcamera.aspect = aspect;\n\t\t\t\tcamera.far = far;\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\t\tLight.call( this, 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\tObject.defineProperty( this, 'power', {\n\t\t\tget: function () {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\treturn this.intensity * Math.PI;\n\t\t\t},\n\t\t\tset: function ( power ) {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\tthis.intensity = power / Math.PI;\n\t\t\t}\n\t\t} );\n\n\t\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\t\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\t\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\t\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: SpotLight,\n\n\t\tisSpotLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tLight.prototype.copy.call( this, source );\n\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.angle = source.angle;\n\t\t\tthis.penumbra = source.penumbra;\n\t\t\tthis.decay = source.decay;\n\n\t\t\tthis.target = source.target.clone();\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\n\tfunction PointLight( color, intensity, distance, decay ) {\n\n\t\tLight.call( this, color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tObject.defineProperty( this, 'power', {\n\t\t\tget: function () {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t\t},\n\t\t\tset: function ( power ) {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t\t}\n\t\t} );\n\n\t\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\t\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\t\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t}\n\n\tPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: PointLight,\n\n\t\tisPointLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tLight.prototype.copy.call( this, source );\n\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.decay = source.decay;\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction DirectionalLightShadow( ) {\n\n\t\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n\tDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\t\tconstructor: DirectionalLightShadow\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction DirectionalLight( color, intensity ) {\n\n\t\tLight.call( this, 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\tDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: DirectionalLight,\n\n\t\tisDirectionalLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tLight.prototype.copy.call( this, source );\n\n\t\t\tthis.target = source.target.clone();\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction AmbientLight( color, intensity ) {\n\n\t\tLight.call( this, color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t\tthis.castShadow = undefined;\n\n\t}\n\n\tAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: AmbientLight,\n\n\t\tisAmbientLight: true\n\n\t} );\n\n\t/**\n\t * @author abelnation / http://github.com/abelnation\n\t */\n\n\tfunction RectAreaLight( color, intensity, width, height ) {\n\n\t\tLight.call( this, color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.position.set( 0, 1, 0 );\n\t\tthis.updateMatrix();\n\n\t\tthis.width = ( width !== undefined ) ? width : 10;\n\t\tthis.height = ( height !== undefined ) ? height : 10;\n\n\t\t// TODO (abelnation): distance/decay\n\n\t\t// TODO (abelnation): update method for RectAreaLight to update transform to lookat target\n\n\t\t// TODO (abelnation): shadows\n\n\t}\n\n\t// TODO (abelnation): RectAreaLight update when light shape is changed\n\tRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\t\tconstructor: RectAreaLight,\n\n\t\tisRectAreaLight: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tLight.prototype.copy.call( this, source );\n\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.width = this.width;\n\t\t\tdata.object.height = this.height;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author tschw\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t */\n\n\tvar AnimationUtils = {\n\n\t\t// same as Array.prototype.slice, but also works on typed arrays\n\t\tarraySlice: function ( array, from, to ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t\t}\n\n\t\t\treturn array.slice( from, to );\n\n\t\t},\n\n\t\t// converts an array to a specific type\n\t\tconvertArray: function ( array, type, forceClone ) {\n\n\t\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\t\treturn new type( array ); // create typed array\n\n\t\t\t}\n\n\t\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t\t},\n\n\t\tisTypedArray: function ( object ) {\n\n\t\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t\t! ( object instanceof DataView );\n\n\t\t},\n\n\t\t// returns an array by which times and values can be sorted\n\t\tgetKeyframeOrder: function ( times ) {\n\n\t\t\tfunction compareTime( i, j ) {\n\n\t\t\t\treturn times[ i ] - times[ j ];\n\n\t\t\t}\n\n\t\t\tvar n = times.length;\n\t\t\tvar result = new Array( n );\n\t\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\t\tresult.sort( compareTime );\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\t\tsortedArray: function ( values, stride, order ) {\n\n\t\t\tvar nValues = values.length;\n\t\t\tvar result = new values.constructor( nValues );\n\n\t\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// function for parsing AOS keyframe formats\n\t\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t}\n\n\t\t\tif ( key === undefined ) return; // no data\n\n\t\t\tvar value = key[ valuePropertyName ];\n\t\t\tif ( value === undefined ) return; // no data\n\n\t\t\tif ( Array.isArray( value ) ) {\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t\t// ...assume THREE.Math-ish\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t} else {\n\n\t\t\t\t// otherwise push as-is\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Abstract base class of interpolants over parametric samples.\n\t *\n\t * The parameter domain is one dimensional, typically the time or a path\n\t * along a curve defined by the data.\n\t *\n\t * The sample values can have any dimensionality and derived classes may\n\t * apply special interpretations to the data.\n\t *\n\t * This class provides the interval seek in a Template Method, deferring\n\t * the actual interpolation to derived classes.\n\t *\n\t * Time complexity is O(1) for linear access crossing at most two points\n\t * and O(log N) for random access, where N is the number of positions.\n\t *\n\t * References:\n\t *\n\t * \t\thttp://www.oodesign.com/template-method-pattern.html\n\t *\n\t * @author tschw\n\t */\n\n\tfunction Interpolant( 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\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t}\n\n\tObject.assign( Interpolant.prototype, {\n\n\t\tevaluate: function( t ) {\n\n\t\t\tvar pp = this.parameterPositions,\n\t\t\t\ti1 = this._cachedIndex,\n\n\t\t\t\tt1 = pp[   i1   ],\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\tvalidate_interval: {\n\n\t\t\t\tseek: {\n\n\t\t\t\t\tvar right;\n\n\t\t\t\t\tlinear_scan: {\n\t\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t\t//- slower code:\n\t\t\t\t\t\t//-\n\t\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\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\t// prepare binary search on the right side of the index\n\t\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//- slower code:\n\t\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\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\t// prepare binary search on the left side of the index\n\t\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t\t} // linear scan\n\n\t\t\t\t\t// binary search\n\n\t\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tt1 = pp[   i1   ];\n\t\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t\t// check boundary cases, again\n\n\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t\t}\n\n\t\t\t\t} // seek\n\n\t\t\t\tthis._cachedIndex = i1;\n\n\t\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t\t} // validate_interval\n\n\t\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t\t},\n\n\t\tsettings: null, // optional, subclass-specific settings structure\n\t\t// Note: The indirection allows central control of many interpolants.\n\n\t\t// --- Protected interface\n\n\t\tDefaultSettings_: {},\n\n\t\tgetSettings_: function() {\n\n\t\t\treturn this.settings || this.DefaultSettings_;\n\n\t\t},\n\n\t\tcopySampleValue_: function( index ) {\n\n\t\t\t// copies a sample value to the result buffer\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\t\t\t\toffset = index * stride;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// Template methods for derived classes:\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tthrow new Error( \"call to abstract method\" );\n\t\t\t// implementations shall return this.resultBuffer\n\n\t\t},\n\n\t\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t\t// empty\n\n\t\t}\n\n\t} );\n\n\t//!\\ DECLARE ALIAS AFTER assign prototype !\n\tObject.assign( Interpolant.prototype, {\n\n\t\t//( 0, t, t0 ), returns this.resultBuffer\n\t\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t\t//( N-1, tN-1, t ), returns this.resultBuffer\n\t\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n\t} );\n\n\t/**\n\t * Fast and simple cubic spline interpolant.\n\t *\n\t * It was derived from a Hermitian construction setting the first derivative\n\t * at each sample position to the linear slope between neighboring positions\n\t * over their parameter interval.\n\t *\n\t * @author tschw\n\t */\n\n\tfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call(\n\t\t\t\tthis, 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}\n\n\tCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\t\tconstructor: CubicInterpolant,\n\n\t\tDefaultSettings_: {\n\n\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\n\t\t},\n\n\t\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t\tvar pp = this.parameterPositions,\n\t\t\t\tiPrev = i1 - 2,\n\t\t\t\tiNext = i1 + 1,\n\n\t\t\t\ttPrev = pp[ iPrev ],\n\t\t\t\ttNext = pp[ iNext ];\n\n\t\t\tif ( tPrev === undefined ) {\n\n\t\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = t1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( tNext === undefined ) {\n\n\t\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\t\tiNext = i1;\n\t\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiNext = 1;\n\t\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\t\ttNext = t0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\t\tstride = this.valueSize;\n\n\t\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\t\tthis._offsetPrev = iPrev * stride;\n\t\t\tthis._offsetNext = iNext * stride;\n\n\t\t},\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\t\tpp = p * p,\n\t\t\t\tppp = pp * p;\n\n\t\t\t// evaluate polynomials\n\n\t\t\tvar sP =     - wP   * ppp   +         2 * wP    * pp    -          wP   * p;\n\t\t\tvar s0 = ( 1 + wP ) * ppp   + (-1.5 - 2 * wP )  * pp    + ( -0.5 + wP ) * p     + 1;\n\t\t\tvar s1 = (-1 - wN ) * ppp   + ( 1.5 +   wN   )  * pp    +    0.5        * p;\n\t\t\tvar sN =       wN   * ppp   -           wN      * pp;\n\n\t\t\t// combine data linearly\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] =\n\t\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author tschw\n\t */\n\n\tfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\t\tconstructor: LinearInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toffset1 = i1 * stride,\n\t\t\t\toffset0 = offset1 - stride,\n\n\t\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\t\tweight0 = 1 - weight1;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] =\n\t\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * Interpolant that evaluates to the sample value at the position preceeding\n\t * the parameter.\n\t *\n\t * @author tschw\n\t */\n\n\tfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\t\tconstructor: DiscreteInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t}\n\n\t} );\n\n\tvar KeyframeTrackPrototype;\n\n\tKeyframeTrackPrototype = {\n\n\t\tTimeBufferType: Float32Array,\n\t\tValueBufferType: Float32Array,\n\n\t\tDefaultInterpolation: InterpolateLinear,\n\n\t\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\t\treturn new DiscreteInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\t\treturn new LinearInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\t\treturn new CubicInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tsetInterpolation: function ( interpolation ) {\n\n\t\t\tvar factoryMethod;\n\n\t\t\tswitch ( interpolation ) {\n\n\t\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase InterpolateLinear:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase InterpolateSmooth:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( factoryMethod === undefined ) {\n\n\t\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconsole.warn( 'THREE.KeyframeTrackPrototype:', message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.createInterpolant = factoryMethod;\n\n\t\t},\n\n\t\tgetInterpolation: function () {\n\n\t\t\tswitch ( this.createInterpolant ) {\n\n\t\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\t\treturn InterpolateLinear;\n\n\t\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\t\treturn InterpolateSmooth;\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetValueSize: function () {\n\n\t\t\treturn this.values.length / this.times.length;\n\n\t\t},\n\n\t\t// move all keyframes either forwards or backwards in time\n\t\tshift: function ( timeOffset ) {\n\n\t\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\t\tvar times = this.times;\n\n\t\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\t\tscale: function ( timeScale ) {\n\n\t\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\t\tvar times = this.times;\n\n\t\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t\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\t\ttrim: function ( startTime, endTime ) {\n\n\t\t\tvar times = this.times,\n\t\t\t\tnKeys = times.length,\n\t\t\t\tfrom = 0,\n\t\t\t\tto = nKeys - 1;\n\n\t\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\t\twhile ( to !== - 1 && times[ to ] > endTime ) -- to;\n\n\t\t\t++ to; // inclusive -> exclusive bound\n\n\t\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\t\tvar stride = this.getValueSize();\n\t\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\t\tthis.values = AnimationUtils.\n\t\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\t\tvalidate: function () {\n\n\t\t\tvar valid = true;\n\n\t\t\tvar valueSize = this.getValueSize();\n\t\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrackPrototype: Invalid value size in track.', this );\n\t\t\t\tvalid = false;\n\n\t\t\t}\n\n\t\t\tvar times = this.times,\n\t\t\t\tvalues = this.values,\n\n\t\t\t\tnKeys = times.length;\n\n\t\t\tif ( nKeys === 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrackPrototype: Track is empty.', this );\n\t\t\t\tvalid = false;\n\n\t\t\t}\n\n\t\t\tvar prevTime = null;\n\n\t\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\t\tvar currTime = times[ i ];\n\n\t\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.KeyframeTrackPrototype: Time is not a valid number.', this, i, currTime );\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\t\tconsole.error( 'THREE.KeyframeTrackPrototype: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tprevTime = currTime;\n\n\t\t\t}\n\n\t\t\tif ( values !== undefined ) {\n\n\t\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrackPrototype: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn valid;\n\n\t\t},\n\n\t\t// removes equivalent sequential keys as common in morph target sequences\n\t\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\t\toptimize: function () {\n\n\t\t\tvar times = this.times,\n\t\t\t\tvalues = this.values,\n\t\t\t\tstride = this.getValueSize(),\n\n\t\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\t\twriteIndex = 1,\n\t\t\t\tlastIndex = times.length - 1;\n\n\t\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\t\tvar keep = false;\n\n\t\t\t\tvar time = times[ i ];\n\t\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\t\tbreak;\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 keep = true;\n\n\t\t\t\t}\n\n\t\t\t\t// in-place compaction\n\n\t\t\t\tif ( keep ) {\n\n\t\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j )\n\n\t\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\t++ writeIndex;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// flush last keyframe (compaction looks ahead)\n\n\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j )\n\n\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t\tif ( writeIndex !== times.length ) {\n\n\t\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\tfunction KeyframeTrackConstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\t\tif ( times === undefined || times.length === 0 ) {\n\n\t\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t\t}\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\tthis.validate();\n\t\tthis.optimize();\n\n\t}\n\n\t/**\n\t *\n\t * A Track of vectored keyframe values.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n\t}\n\n\tVectorKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: VectorKeyframeTrack,\n\n\t\tValueTypeName: 'vector'\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\t} );\n\n\t/**\n\t * Spherical linear unit quaternion interpolant.\n\t *\n\t * @author tschw\n\t */\n\n\tfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\t\tconstructor: QuaternionLinearInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toffset = i1 * stride,\n\n\t\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\t\tQuaternion.slerpFlat( result, 0,\n\t\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * A Track of quaternion keyframe values.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n\t}\n\n\tQuaternionKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: QuaternionKeyframeTrack,\n\n\t\tValueTypeName: 'quaternion',\n\n\t\t// ValueBufferType is inherited\n\n\t\tDefaultInterpolation: InterpolateLinear,\n\n\t\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\t\treturn new QuaternionLinearInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n\t} );\n\n\t/**\n\t *\n\t * A Track of numeric keyframe values.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n\t}\n\n\tNumberKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: NumberKeyframeTrack,\n\n\t\tValueTypeName: 'number'\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\t} );\n\n\t/**\n\t *\n\t * A Track that interpolates Strings\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n\t}\n\n\tStringKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: StringKeyframeTrack,\n\n\t\tValueTypeName: 'string',\n\t\tValueBufferType: Array,\n\n\t\tDefaultInterpolation: InterpolateDiscrete,\n\n\t\tInterpolantFactoryMethodLinear: undefined,\n\n\t\tInterpolantFactoryMethodSmooth: undefined\n\n\t} );\n\n\t/**\n\t *\n\t * A Track of Boolean keyframe values.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction BooleanKeyframeTrack( name, times, values ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values );\n\n\t}\n\n\tBooleanKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: BooleanKeyframeTrack,\n\n\t\tValueTypeName: 'bool',\n\t\tValueBufferType: Array,\n\n\t\tDefaultInterpolation: InterpolateDiscrete,\n\n\t\tInterpolantFactoryMethodLinear: undefined,\n\t\tInterpolantFactoryMethodSmooth: undefined\n\n\t\t// Note: Actually this track could have a optimized / compressed\n\t\t// representation of a single value and a custom interpolant that\n\t\t// computes \"firstValue ^ isOdd( index )\".\n\n\t} );\n\n\t/**\n\t *\n\t * A Track of keyframe values that represent color.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n\t}\n\n\tColorKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\t\tconstructor: ColorKeyframeTrack,\n\n\t\tValueTypeName: 'color'\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\n\t\t// Note: Very basic implementation and nothing special yet.\n\t\t// However, this is the place for color space parameterization.\n\n\t} );\n\n\t/**\n\t *\n\t * A timed sequence of keyframes for a specific property.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\t\tKeyframeTrackConstructor.apply( this, arguments );\n\n\t}\n\n\tKeyframeTrack.prototype = KeyframeTrackPrototype;\n\tKeyframeTrackPrototype.constructor = KeyframeTrack;\n\n\t// Static methods:\n\n\tObject.assign( KeyframeTrack, {\n\n\t\t// Serialization (in static context, because of constructor invocation\n\t\t// and automatic invocation of .toJSON):\n\n\t\tparse: function( json ) {\n\n\t\t\tif( json.type === undefined ) {\n\n\t\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t\t}\n\n\t\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\t\tif ( json.times === undefined ) {\n\n\t\t\t\tvar times = [], values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\t\tjson.times = times;\n\t\t\t\tjson.values = values;\n\n\t\t\t}\n\n\t\t\t// derived classes can define a static parse method\n\t\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\t\treturn trackType.parse( json );\n\n\t\t\t} else {\n\n\t\t\t\t// by default, we assume a constructor compatible with the base\n\t\t\t\treturn new trackType(\n\t\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function( track ) {\n\n\t\t\tvar trackType = track.constructor;\n\n\t\t\tvar json;\n\n\t\t\t// derived classes can define a static toJSON method\n\t\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\t\tjson = trackType.toJSON( track );\n\n\t\t\t} else {\n\n\t\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\t\tjson = {\n\n\t\t\t\t\t'name': track.name,\n\t\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t\t};\n\n\t\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\t\treturn json;\n\n\t\t},\n\n\t\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\t\tcase \"scalar\":\n\t\t\t\tcase \"double\":\n\t\t\t\tcase \"float\":\n\t\t\t\tcase \"number\":\n\t\t\t\tcase \"integer\":\n\n\t\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\t\tcase \"vector\":\n\t\t\t\tcase \"vector2\":\n\t\t\t\tcase \"vector3\":\n\t\t\t\tcase \"vector4\":\n\n\t\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\t\tcase \"color\":\n\n\t\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\t\tcase \"quaternion\":\n\n\t\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\t\tcase \"bool\":\n\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\t\tcase \"string\":\n\n\t\t\t\t\treturn StringKeyframeTrack;\n\n\t\t\t}\n\n\t\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * Reusable set of Tracks that represent an animation.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t */\n\n\tfunction AnimationClip( name, duration, tracks ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\t\tthis.uuid = _Math.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\tthis.optimize();\n\n\t}\n\n\tObject.assign( AnimationClip, {\n\n\t\tparse: function ( json ) {\n\n\t\t\tvar tracks = [],\n\t\t\t\tjsonTracks = json.tracks,\n\t\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t\t},\n\n\t\ttoJSON: function ( clip ) {\n\n\t\t\tvar tracks = [],\n\t\t\t\tclipTracks = clip.tracks;\n\n\t\t\tvar json = {\n\n\t\t\t\t'name': clip.name,\n\t\t\t\t'duration': clip.duration,\n\t\t\t\t'tracks': tracks\n\n\t\t\t};\n\n\t\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn json;\n\n\t\t},\n\n\t\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\ttimes.push(\n\t\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t\t// last frame as well for perfect loop.\n\t\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\ttracks.push(\n\t\t\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\t\ttimes, values\n\t\t\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t\t},\n\n\t\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\t\tvar clipArray = objectOrClipArray;\n\n\t\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\t\tvar o = objectOrClipArray;\n\t\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\t\treturn clipArray[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t},\n\n\t\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\t\tvar animationToMorphTargets = {};\n\n\t\t\t// tested with https://regex101.com/ on trick sequences\n\t\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t\t// sort morph target names into animation groups based\n\t\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar clips = [];\n\n\t\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t\t}\n\n\t\t\treturn clips;\n\n\t\t},\n\n\t\t// parse the animation.hierarchy format\n\t\tparseAnimation: function ( animation, bones ) {\n\n\t\t\tif ( ! animation ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t\t// only return track if there are actually keys.\n\t\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar clipName = animation.name || 'default';\n\t\t\t// automatic length determination in AnimationClip.\n\t\t\tvar duration = animation.length || - 1;\n\t\t\tvar fps = animation.fps || 30;\n\n\t\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t\t// skip empty tracks\n\t\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t\t// process morph targets\n\t\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\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\t// create a track for each morph target with all zero\n\t\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t\t// the morphTarget is named.\n\t\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\t\tvar times = [];\n\t\t\t\t\t\tvar values = [];\n\n\t\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( tracks.length === 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\t\treturn clip;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( AnimationClip.prototype, {\n\n\t\tresetDuration: function () {\n\n\t\t\tvar tracks = this.tracks, duration = 0;\n\n\t\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\t\tvar track = this.tracks[ i ];\n\n\t\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.duration = duration;\n\n\t\t},\n\n\t\ttrim: function () {\n\n\t\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\toptimize: function () {\n\n\t\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\t\tthis.tracks[ i ].optimize();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction MaterialLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\t\tthis.textures = {};\n\n\t}\n\n\tObject.assign( MaterialLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTextures: function ( value ) {\n\n\t\t\tthis.textures = value;\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\tvar textures = this.textures;\n\n\t\t\tfunction getTexture( name ) {\n\n\t\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn textures[ name ];\n\n\t\t\t}\n\n\t\t\tvar material = new Materials[ json.type ]();\n\n\t\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t\t// Deprecated\n\n\t\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t\t// for PointsMaterial\n\n\t\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t\t// maps\n\n\t\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\t\tmaterial.transparent = true;\n\n\t\t\t}\n\n\t\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\t\tvar normalScale = json.normalScale;\n\n\t\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t\t}\n\n\t\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t\t}\n\n\t\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\t\treturn material;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction BufferGeometryLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( BufferGeometryLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar index = json.data.index;\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tvar attributes = json.data.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ key ];\n\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t\t}\n\n\t\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\t\tif ( groups !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\t\tvar center = new Vector3();\n\n\t\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t} );\n\n\tvar TYPED_ARRAYS = {\n\t\tInt8Array: Int8Array,\n\t\tUint8Array: Uint8Array,\n\t\t// Workaround for IE11 pre KB2929437. See #11440\n\t\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\t\tInt16Array: Int16Array,\n\t\tUint16Array: Uint16Array,\n\t\tInt32Array: Int32Array,\n\t\tUint32Array: Uint32Array,\n\t\tFloat32Array: Float32Array,\n\t\tFloat64Array: Float64Array\n\t};\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Loader() {\n\n\t\tthis.onLoadStart = function () {};\n\t\tthis.onLoadProgress = function () {};\n\t\tthis.onLoadComplete = function () {};\n\n\t}\n\n\tLoader.Handlers = {\n\n\t\thandlers: [],\n\n\t\tadd: function ( regex, loader ) {\n\n\t\t\tthis.handlers.push( regex, loader );\n\n\t\t},\n\n\t\tget: function ( file ) {\n\n\t\t\tvar handlers = this.handlers;\n\n\t\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tvar regex = handlers[ i ];\n\t\t\t\tvar loader = handlers[ i + 1 ];\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\tObject.assign( Loader.prototype, {\n\n\t\tcrossOrigin: undefined,\n\n\t\textractUrlBase: function ( url ) {\n\n\t\t\tvar parts = url.split( '/' );\n\n\t\t\tif ( parts.length === 1 ) return './';\n\n\t\t\tparts.pop();\n\n\t\t\treturn parts.join( '/' ) + '/';\n\n\t\t},\n\n\t\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tcreateMaterial: ( function () {\n\n\t\t\tvar BlendingMode = {\n\t\t\t\tNoBlending: NoBlending,\n\t\t\t\tNormalBlending: NormalBlending,\n\t\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\t\tCustomBlending: CustomBlending\n\t\t\t};\n\n\t\t\tvar color = new Color();\n\t\t\tvar textureLoader = new TextureLoader();\n\t\t\tvar materialLoader = new MaterialLoader();\n\n\t\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t\t// convert from old material format\n\n\t\t\t\tvar textures = {};\n\n\t\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\t\tvar texture;\n\n\t\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\t\treturn uuid;\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tvar json = {\n\t\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t\t};\n\n\t\t\t\tfor ( var name in m ) {\n\n\t\t\t\t\tvar value = m[ name ];\n\n\t\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\t\tcase 'opacity':\n\t\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\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\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\t\treturn materialLoader.parse( json );\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction JSONLoader( manager ) {\n\n\t\tif ( typeof manager === 'boolean' ) {\n\n\t\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\t\tmanager = undefined;\n\n\t\t}\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.withCredentials = false;\n\n\t}\n\n\tObject.assign( JSONLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : Loader.prototype.extractUrlBase( url );\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tvar json = JSON.parse( text );\n\t\t\t\tvar metadata = json.metadata;\n\n\t\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\t\tvar type = metadata.type;\n\n\t\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\t\treturn;\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\tvar object = scope.parse( json, texturePath );\n\t\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTexturePath: function ( value ) {\n\n\t\t\tthis.texturePath = value;\n\n\t\t},\n\n\t\tparse: ( function () {\n\n\t\t\tfunction parseModel( json, geometry ) {\n\n\t\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t\t}\n\n\t\t\t\tvar i, j, fi,\n\n\t\t\t\t\toffset, zLength,\n\n\t\t\t\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\t\t\ttype,\n\t\t\t\t\tisQuad,\n\t\t\t\t\thasMaterial,\n\t\t\t\t\thasFaceVertexUv,\n\t\t\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\t\t\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\t\t\tuvLayer, uv, u, v,\n\n\t\t\t\t\tfaces = json.faces,\n\t\t\t\t\tvertices = json.vertices,\n\t\t\t\t\tnormals = json.normals,\n\t\t\t\t\tcolors = json.colors,\n\n\t\t\t\t\tscale = json.scale,\n\n\t\t\t\t\tnUvLayers = 0;\n\n\n\t\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t\t// disregard empty arrays\n\n\t\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\toffset = 0;\n\t\t\t\tzLength = vertices.length;\n\n\t\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\t\tvertex = new Vector3();\n\n\t\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t\t}\n\n\t\t\t\toffset = 0;\n\t\t\t\tzLength = faces.length;\n\n\t\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\t\ttype = faces[ offset ++ ];\n\n\t\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\t\thasFaceColor = isBitSet( type, 6 );\n\t\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\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\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tface = new Face3();\n\t\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\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\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseSkin( json, geometry ) {\n\n\t\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.bones = json.bones;\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseMorphing( json, geometry ) {\n\n\t\t\t\tvar scale = json.scale;\n\n\t\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\t\tvar faces = geometry.faces;\n\t\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseAnimations( json, geometry ) {\n\n\t\t\t\tvar outputAnimations = [];\n\n\t\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\t\tvar animations = [];\n\n\t\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\t\tanimations.push( json.animation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t\t}\n\n\t\t\t\t// parse implicit morph animations\n\t\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t\t}\n\n\t\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t\t}\n\n\t\t\treturn function ( json, texturePath ) {\n\n\t\t\t\tif ( json.data !== undefined ) {\n\n\t\t\t\t\t// Geometry 4.0 spec\n\t\t\t\t\tjson = json.data;\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.scale !== undefined ) {\n\n\t\t\t\t\tjson.scale = 1.0 / json.scale;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tjson.scale = 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tvar geometry = new Geometry();\n\n\t\t\t\tparseModel( json, geometry );\n\t\t\t\tparseSkin( json, geometry );\n\t\t\t\tparseMorphing( json, geometry );\n\t\t\t\tparseAnimations( json, geometry );\n\n\t\t\t\tgeometry.computeFaceNormals();\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\t\t\treturn { geometry: geometry };\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction ObjectLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\t\tthis.texturePath = '';\n\n\t}\n\n\tObject.assign( ObjectLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( this.texturePath === '' ) {\n\n\t\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t\t}\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tvar json = null;\n\n\t\t\t\ttry {\n\n\t\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tvar metadata = json.metadata;\n\n\t\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tscope.parse( json, onLoad );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTexturePath: function ( value ) {\n\n\t\t\tthis.texturePath = value;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\n\t\t},\n\n\t\tparse: function ( json, onLoad ) {\n\n\t\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t} );\n\n\t\t\tvar textures = this.parseTextures( json.textures, images );\n\t\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\t\tif ( json.animations ) {\n\n\t\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t\t}\n\n\t\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t},\n\n\t\tparseGeometries: function ( json ) {\n\n\t\t\tvar geometries = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar geometry;\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.texturePath ).geometry;\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\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn geometries;\n\n\t\t},\n\n\t\tparseMaterials: function ( json, textures ) {\n\n\t\t\tvar materials = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar loader = new MaterialLoader();\n\t\t\t\tloader.setTextures( textures );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t\t// Deprecated\n\n\t\t\t\t\t\tvar array = [];\n\n\t\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\t\tarray.push( loader.parse( data.materials[ j ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterials[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t},\n\n\t\tparseAnimations: function ( json ) {\n\n\t\t\tvar animations = [];\n\n\t\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\t\tanimations.push( clip );\n\n\t\t\t}\n\n\t\t\treturn animations;\n\n\t\t},\n\n\t\tparseImages: function ( json, onLoad ) {\n\n\t\t\tvar scope = this;\n\t\t\tvar images = {};\n\n\t\t\tfunction loadImage( url ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\treturn loader.load( url, function () {\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, undefined, function () {\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\t\tvar loader = new ImageLoader( manager );\n\t\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar image = json[ i ];\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn images;\n\n\t\t},\n\n\t\tparseTextures: function ( json, images ) {\n\n\t\t\tfunction parseConstant( value, type ) {\n\n\t\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\t\treturn type[ value ];\n\n\t\t\t}\n\n\t\t\tvar textures = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar texture = new Texture( images[ data.image ] );\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn textures;\n\n\t\t},\n\n\t\tparseObject: function () {\n\n\t\t\tvar matrix = new Matrix4();\n\n\t\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\t\tvar object;\n\n\t\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn geometries[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\t\t\tvar array = [];\n\n\t\t\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn array;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn materials[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'Scene':\n\n\t\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\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\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RectAreaLight':\n\n\t\t\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LOD':\n\n\t\t\t\t\t\tobject = new LOD();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Line':\n\n\t\t\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LineLoop':\n\n\t\t\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LineSegments':\n\n\t\t\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointCloud':\n\t\t\t\t\tcase 'Points':\n\n\t\t\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Group':\n\n\t\t\t\t\t\tobject = new Group();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tobject = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t\tobject.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\t\tif ( data.shadow ) {\n\n\t\t\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\t\tvar children = data.children;\n\n\t\t\t\t\tfor ( var  i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\t\tvar levels = data.levels;\n\n\t\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\t\tobject.addLevel( child, level.distance );\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\treturn object;\n\n\t\t\t};\n\n\t\t}()\n\n\t} );\n\n\tvar TEXTURE_MAPPING = {\n\t\tUVMapping: UVMapping,\n\t\tCubeReflectionMapping: CubeReflectionMapping,\n\t\tCubeRefractionMapping: CubeRefractionMapping,\n\t\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\t\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\t\tSphericalReflectionMapping: SphericalReflectionMapping,\n\t\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\t\tCubeUVRefractionMapping: CubeUVRefractionMapping\n\t};\n\n\tvar TEXTURE_WRAPPING = {\n\t\tRepeatWrapping: RepeatWrapping,\n\t\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\t\tMirroredRepeatWrapping: MirroredRepeatWrapping\n\t};\n\n\tvar TEXTURE_FILTER = {\n\t\tNearestFilter: NearestFilter,\n\t\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\t\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\t\tLinearFilter: LinearFilter,\n\t\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\t\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n\t};\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t *\n\t * Bezier Curves formulas obtained from\n\t * http://en.wikipedia.org/wiki/Bézier_curve\n\t */\n\n\tfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\tvar t2 = t * t;\n\t\tvar t3 = t * t2;\n\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n\t//\n\n\tfunction QuadraticBezierP0( t, p ) {\n\n\t\tvar k = 1 - t;\n\t\treturn k * k * p;\n\n\t}\n\n\tfunction QuadraticBezierP1( t, p ) {\n\n\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t}\n\n\tfunction QuadraticBezierP2( t, p ) {\n\n\t\treturn t * t * p;\n\n\t}\n\n\tfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\t\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\t\tQuadraticBezierP2( t, p2 );\n\n\t}\n\n\t//\n\n\tfunction CubicBezierP0( t, p ) {\n\n\t\tvar k = 1 - t;\n\t\treturn k * k * k * p;\n\n\t}\n\n\tfunction CubicBezierP1( t, p ) {\n\n\t\tvar k = 1 - t;\n\t\treturn 3 * k * k * t * p;\n\n\t}\n\n\tfunction CubicBezierP2( t, p ) {\n\n\t\treturn 3 * ( 1 - t ) * t * t * p;\n\n\t}\n\n\tfunction CubicBezierP3( t, p ) {\n\n\t\treturn t * t * t * p;\n\n\t}\n\n\tfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\t\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\t\tCubicBezierP3( t, p3 );\n\n\t}\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Extensible curve object\n\t *\n\t * Some common of curve methods:\n\t * .getPoint(t), getTangent(t)\n\t * .getPointAt(u), getTangentAt(u)\n\t * .getPoints(), .getSpacedPoints()\n\t * .getLength()\n\t * .updateArcLengths()\n\t *\n\t * This following curves inherit from THREE.Curve:\n\t *\n\t * -- 2D curves --\n\t * THREE.ArcCurve\n\t * THREE.CubicBezierCurve\n\t * THREE.EllipseCurve\n\t * THREE.LineCurve\n\t * THREE.QuadraticBezierCurve\n\t * THREE.SplineCurve\n\t *\n\t * -- 3D curves --\n\t * THREE.CatmullRomCurve3\n\t * THREE.CubicBezierCurve3\n\t * THREE.LineCurve3\n\t * THREE.QuadraticBezierCurve3\n\t *\n\t * A series of curves can be represented as a THREE.CurvePath.\n\t *\n\t **/\n\n\t/**************************************************************\n\t *\tAbstract Curve base class\n\t **************************************************************/\n\n\tfunction Curve() {\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\tObject.assign( Curve.prototype, {\n\n\t\t// Virtual base class method to overwrite and implement in subclasses\n\t\t//\t- t [0 .. 1]\n\n\t\tgetPoint: function () {\n\n\t\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\t\treturn null;\n\n\t\t},\n\n\t\t// Get point at relative position in curve according to arc length\n\t\t// - u [0 .. 1]\n\n\t\tgetPointAt: function ( u ) {\n\n\t\t\tvar t = this.getUtoTmapping( u );\n\t\t\treturn this.getPoint( t );\n\n\t\t},\n\n\t\t// Get sequence of points using getPoint( t )\n\n\t\tgetPoints: function ( divisions ) {\n\n\t\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\t\tvar points = [];\n\n\t\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\t// Get sequence of points using getPointAt( u )\n\n\t\tgetSpacedPoints: function ( divisions ) {\n\n\t\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\t\tvar points = [];\n\n\t\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\t// Get total curve arc length\n\n\t\tgetLength: function () {\n\n\t\t\tvar lengths = this.getLengths();\n\t\t\treturn lengths[ lengths.length - 1 ];\n\n\t\t},\n\n\t\t// Get list of cumulative segment lengths\n\n\t\tgetLengths: function ( divisions ) {\n\n\t\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\t\tif ( this.cacheArcLengths &&\n\t\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t\t! this.needsUpdate ) {\n\n\t\t\t\treturn this.cacheArcLengths;\n\n\t\t\t}\n\n\t\t\tthis.needsUpdate = false;\n\n\t\t\tvar cache = [];\n\t\t\tvar current, last = this.getPoint( 0 );\n\t\t\tvar p, sum = 0;\n\n\t\t\tcache.push( 0 );\n\n\t\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\t\tsum += current.distanceTo( last );\n\t\t\t\tcache.push( sum );\n\t\t\t\tlast = current;\n\n\t\t\t}\n\n\t\t\tthis.cacheArcLengths = cache;\n\n\t\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t\t},\n\n\t\tupdateArcLengths: function () {\n\n\t\t\tthis.needsUpdate = true;\n\t\t\tthis.getLengths();\n\n\t\t},\n\n\t\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\t\tgetUtoTmapping: function ( u, distance ) {\n\n\t\t\tvar arcLengths = this.getLengths();\n\n\t\t\tvar i = 0, il = arcLengths.length;\n\n\t\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\t\tif ( distance ) {\n\n\t\t\t\ttargetArcLength = distance;\n\n\t\t\t} else {\n\n\t\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t\t}\n\n\t\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\t\tvar low = 0, high = il - 1, comparison;\n\n\t\t\twhile ( low <= high ) {\n\n\t\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\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\t\tlow = i + 1;\n\n\t\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\t\thigh = i - 1;\n\n\t\t\t\t} else {\n\n\t\t\t\t\thigh = i;\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// DONE\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ti = high;\n\n\t\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\t\treturn i / ( il - 1 );\n\n\t\t\t}\n\n\t\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\t\tvar lengthBefore = arcLengths[ i ];\n\t\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t\t// determine where we are between the 'before' and 'after' points\n\n\t\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t\t// add that fractional amount to t\n\n\t\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\t\treturn t;\n\n\t\t},\n\n\t\t// Returns a unit vector tangent at t\n\t\t// In case any sub curve does not implement its tangent derivation,\n\t\t// 2 points a small delta apart will be used to find its gradient\n\t\t// which seems to give a reasonable approximation\n\n\t\tgetTangent: function ( t ) {\n\n\t\t\tvar delta = 0.0001;\n\t\t\tvar t1 = t - delta;\n\t\t\tvar t2 = t + delta;\n\n\t\t\t// Capping in case of danger\n\n\t\t\tif ( t1 < 0 ) t1 = 0;\n\t\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\t\tvar pt1 = this.getPoint( t1 );\n\t\t\tvar pt2 = this.getPoint( t2 );\n\n\t\t\tvar vec = pt2.clone().sub( pt1 );\n\t\t\treturn vec.normalize();\n\n\t\t},\n\n\t\tgetTangentAt: function ( u ) {\n\n\t\t\tvar t = this.getUtoTmapping( u );\n\t\t\treturn this.getTangent( t );\n\n\t\t},\n\n\t\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar tangents = [];\n\t\t\tvar normals = [];\n\t\t\tvar binormals = [];\n\n\t\t\tvar vec = new Vector3();\n\t\t\tvar mat = new Matrix4();\n\n\t\t\tvar i, u, theta;\n\n\t\t\t// compute the tangent vectors for each segment on the curve\n\n\t\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\t\tu = i / segments;\n\n\t\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\t\ttangents[ i ].normalize();\n\n\t\t\t}\n\n\t\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t\t// and in the direction of the minimum tangent xyz component\n\n\t\t\tnormals[ 0 ] = new Vector3();\n\t\t\tbinormals[ 0 ] = new Vector3();\n\t\t\tvar min = Number.MAX_VALUE;\n\t\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\t\tif ( tx <= min ) {\n\n\t\t\t\tmin = tx;\n\t\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( ty <= min ) {\n\n\t\t\t\tmin = ty;\n\t\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t\t}\n\n\t\t\tif ( tz <= min ) {\n\n\t\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t\t}\n\n\t\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\t\tvec.normalize();\n\n\t\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t\t}\n\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\t\tif ( closed === true ) {\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\t\ttheta /= segments;\n\n\t\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\t\ttheta = - theta;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t\t// twist a little...\n\t\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttangents: tangents,\n\t\t\t\tnormals: normals,\n\t\t\t\tbinormals: binormals\n\t\t\t};\n\n\t\t}\n\n\t} );\n\n\tfunction LineCurve( v1, v2 ) {\n\n\t\tCurve.call( this );\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tLineCurve.prototype = Object.create( Curve.prototype );\n\tLineCurve.prototype.constructor = LineCurve;\n\n\tLineCurve.prototype.isLineCurve = true;\n\n\tLineCurve.prototype.getPoint = function ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar point = this.v2.clone().sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\treturn point;\n\n\t};\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\n\tLineCurve.prototype.getPointAt = function ( u ) {\n\n\t\treturn this.getPoint( u );\n\n\t};\n\n\tLineCurve.prototype.getTangent = function ( t ) {\n\n\t\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\t\treturn tangent.normalize();\n\n\t};\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t *\n\t **/\n\n\t/**************************************************************\n\t *\tCurved Path - a curve path is simply a array of connected\n\t *  curves, but retains the api of a curve\n\t **************************************************************/\n\n\tfunction CurvePath() {\n\n\t\tCurve.call( this );\n\n\t\tthis.curves = [];\n\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\t\tconstructor: CurvePath,\n\n\t\tadd: function ( curve ) {\n\n\t\t\tthis.curves.push( curve );\n\n\t\t},\n\n\t\tclosePath: function () {\n\n\t\t\t// Add a line curve if start and end of lines are not connected\n\t\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t\t}\n\n\t\t},\n\n\t\t// To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\t\tgetPoint: function ( t ) {\n\n\t\t\tvar d = t * this.getLength();\n\t\t\tvar curveLengths = this.getCurveLengths();\n\t\t\tvar i = 0;\n\n\t\t\t// To think about boundaries points.\n\n\t\t\twhile ( i < curveLengths.length ) {\n\n\t\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t\t}\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t\t},\n\n\t\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t\t// getPoint() depends on getLength\n\n\t\tgetLength: function () {\n\n\t\t\tvar lens = this.getCurveLengths();\n\t\t\treturn lens[ lens.length - 1 ];\n\n\t\t},\n\n\t\t// cacheLengths must be recalculated.\n\t\tupdateArcLengths: function () {\n\n\t\t\tthis.needsUpdate = true;\n\t\t\tthis.cacheLengths = null;\n\t\t\tthis.getCurveLengths();\n\n\t\t},\n\n\t\t// Compute lengths and cache them\n\t\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\t\tgetCurveLengths: function () {\n\n\t\t\t// We use cache values if curves and cache array are same length\n\n\t\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\t\treturn this.cacheLengths;\n\n\t\t\t}\n\n\t\t\t// Get length of sub-curve\n\t\t\t// Push sums into cached array\n\n\t\t\tvar lengths = [], sums = 0;\n\n\t\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\t\tsums += this.curves[ i ].getLength();\n\t\t\t\tlengths.push( sums );\n\n\t\t\t}\n\n\t\t\tthis.cacheLengths = lengths;\n\n\t\t\treturn lengths;\n\n\t\t},\n\n\t\tgetSpacedPoints: function ( divisions ) {\n\n\t\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\t\tvar points = [];\n\n\t\t\tfor ( var i = 0; i <= divisions; i ++ ) {\n\n\t\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t\t}\n\n\t\t\tif ( this.autoClose ) {\n\n\t\t\t\tpoints.push( points[ 0 ] );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\tgetPoints: function ( divisions ) {\n\n\t\t\tdivisions = divisions || 12;\n\n\t\t\tvar points = [], last;\n\n\t\t\tfor ( var i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\t\tvar curve = curves[ i ];\n\t\t\t\tvar resolution = (curve && curve.isEllipseCurve) ? divisions * 2\n\t\t\t\t\t: (curve && curve.isLineCurve) ? 1\n\t\t\t\t\t: (curve && curve.isSplineCurve) ? divisions * curve.points.length\n\t\t\t\t\t: divisions;\n\n\t\t\t\tvar pts = curve.getPoints( resolution );\n\n\t\t\t\tfor ( var j = 0; j < pts.length; j++ ) {\n\n\t\t\t\t\tvar point = pts[ j ];\n\n\t\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\t\tpoints.push( point );\n\t\t\t\t\tlast = point;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.autoClose && points.length > 1 && !points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\tpoints.push( points[ 0 ] );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\t/**************************************************************\n\t\t *\tCreate Geometries Helpers\n\t\t **************************************************************/\n\n\t\t/// Generate geometry from path points (for Line or Points objects)\n\n\t\tcreatePointsGeometry: function ( divisions ) {\n\n\t\t\tvar pts = this.getPoints( divisions );\n\t\t\treturn this.createGeometry( pts );\n\n\t\t},\n\n\t\t// Generate geometry from equidistant sampling along the path\n\n\t\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\t\tvar pts = this.getSpacedPoints( divisions );\n\t\t\treturn this.createGeometry( pts );\n\n\t\t},\n\n\t\tcreateGeometry: function ( points ) {\n\n\t\t\tvar geometry = new Geometry();\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tvar point = points[ i ];\n\t\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t} );\n\n\tfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tCurve.call( this );\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 || 0;\n\n\t}\n\n\tEllipseCurve.prototype = Object.create( Curve.prototype );\n\tEllipseCurve.prototype.constructor = EllipseCurve;\n\n\tEllipseCurve.prototype.isEllipseCurve = true;\n\n\tEllipseCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar twoPi = Math.PI * 2;\n\t\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tvar 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\tvar angle = this.aStartAngle + t * deltaAngle;\n\t\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\t\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tvar cos = Math.cos( this.aRotation );\n\t\t\tvar sin = Math.sin( this.aRotation );\n\n\t\t\tvar tx = x - this.aX;\n\t\t\tvar 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 new Vector2( x, y );\n\n\t};\n\n\tfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\t\tCurve.call( this );\n\n\t\tthis.points = ( points === undefined ) ? [] : points;\n\n\t}\n\n\tSplineCurve.prototype = Object.create( Curve.prototype );\n\tSplineCurve.prototype.constructor = SplineCurve;\n\n\tSplineCurve.prototype.isSplineCurve = true;\n\n\tSplineCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\treturn new Vector2(\n\t\t\tCatmullRom( weight, point0.x, point1.x, point2.x, point3.x ),\n\t\t\tCatmullRom( weight, point0.y, point1.y, point2.y, point3.y )\n\t\t);\n\n\t};\n\n\tfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\t\tCurve.call( this );\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\tCubicBezierCurve.prototype = Object.create( Curve.prototype );\n\tCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\n\tCubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\treturn new Vector2(\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};\n\n\tfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\t\tCurve.call( this );\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\n\tQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\n\tQuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\treturn new Vector2(\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};\n\n\tvar PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\t\tfromPoints: function ( vectors ) {\n\n\t\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t\t}\n\n\t\t},\n\n\t\tmoveTo: function ( x, y ) {\n\n\t\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\t},\n\n\t\tlineTo: function ( x, y ) {\n\n\t\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.currentPoint.set( x, y );\n\n\t\t},\n\n\t\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\t\tvar curve = new QuadraticBezierCurve(\n\t\t\t\tthis.currentPoint.clone(),\n\t\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\t\tnew Vector2( aX, aY )\n\t\t\t);\n\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.currentPoint.set( aX, aY );\n\n\t\t},\n\n\t\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\t\tvar curve = new CubicBezierCurve(\n\t\t\t\tthis.currentPoint.clone(),\n\t\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\t\tnew Vector2( aX, aY )\n\t\t\t);\n\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.currentPoint.set( aX, aY );\n\n\t\t},\n\n\t\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\t\tvar curve = new SplineCurve( npts );\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\t},\n\n\t\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\t\tvar x0 = this.currentPoint.x;\n\t\t\tvar y0 = this.currentPoint.y;\n\n\t\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\t},\n\n\t\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\t},\n\n\t\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\t\tvar x0 = this.currentPoint.x;\n\t\t\tvar y0 = this.currentPoint.y;\n\n\t\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\t},\n\n\t\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t\t// if a previous curve is present, attempt to join\n\t\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.curves.push( curve );\n\n\t\t\tvar lastPoint = curve.getPoint( 1 );\n\t\t\tthis.currentPoint.copy( lastPoint );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Creates free form 2d path using series of points, lines or curves.\n\t **/\n\n\tfunction Path( points ) {\n\n\t\tCurvePath.call( this );\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.fromPoints( points );\n\n\t\t}\n\n\t}\n\n\tPath.prototype = PathPrototype;\n\tPathPrototype.constructor = Path;\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Defines a 2d shape plane using paths.\n\t **/\n\n\t// STEP 1 Create a path.\n\t// STEP 2 Turn path into shape.\n\t// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n\t// STEP 3a - Extract points from each shape, turn to vertices\n\t// STEP 3b - Triangulate each shape, add faces.\n\n\tfunction Shape() {\n\n\t\tPath.apply( this, arguments );\n\n\t\tthis.holes = [];\n\n\t}\n\n\tShape.prototype = Object.assign( Object.create( PathPrototype ), {\n\n\t\tconstructor: Shape,\n\n\t\tgetPointsHoles: function ( divisions ) {\n\n\t\t\tvar holesPts = [];\n\n\t\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t\t}\n\n\t\t\treturn holesPts;\n\n\t\t},\n\n\t\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\t\textractAllPoints: function ( divisions ) {\n\n\t\t\treturn {\n\n\t\t\t\tshape: this.getPoints( divisions ),\n\t\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t\t};\n\n\t\t},\n\n\t\textractPoints: function ( divisions ) {\n\n\t\t\treturn this.extractAllPoints( divisions );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n\t **/\n\n\tfunction ShapePath() {\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tObject.assign( ShapePath.prototype, {\n\n\t\tmoveTo: function ( x, y ) {\n\n\t\t\tthis.currentPath = new Path();\n\t\t\tthis.subPaths.push( this.currentPath );\n\t\t\tthis.currentPath.moveTo( x, y );\n\n\t\t},\n\n\t\tlineTo: function ( x, y ) {\n\n\t\t\tthis.currentPath.lineTo( x, y );\n\n\t\t},\n\n\t\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\t},\n\n\t\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\t},\n\n\t\tsplineThru: function ( pts ) {\n\n\t\t\tthis.currentPath.splineThru( pts );\n\n\t\t},\n\n\t\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\t\tvar shapes = [];\n\n\t\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t\t}\n\n\t\t\t\treturn shapes;\n\n\t\t\t}\n\n\t\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\t\tvar inside = false;\n\t\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\t\tvar edgeLowPt  = inPolygon[ p ];\n\t\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t\t// not parallel\n\t\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\t\tedgeLowPt  = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\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\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\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\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// parallel or collinear\n\t\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\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\t// continue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn\tinside;\n\n\t\t\t}\n\n\t\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\t\tvar subPaths = this.subPaths;\n\t\t\tif ( subPaths.length === 0 ) return [];\n\n\t\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\t\tif ( subPaths.length === 1 ) {\n\n\t\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\t\ttmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\t\tshapes.push( tmpShape );\n\t\t\t\treturn shapes;\n\n\t\t\t}\n\n\t\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\t\tvar betterShapeHoles = [];\n\t\t\tvar newShapes = [];\n\t\t\tvar newShapeHoles = [];\n\t\t\tvar mainIdx = 0;\n\t\t\tvar tmpPoints;\n\n\t\t\tnewShapes[ mainIdx ] = undefined;\n\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\t\ttmpPath = subPaths[ i ];\n\t\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\t\tif ( solid ) {\n\n\t\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t\t//console.log('cw', i);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t\t//console.log('ccw', i);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\t\tif ( newShapes.length > 1 ) {\n\n\t\t\t\tvar ambiguous = false;\n\t\t\t\tvar toChange = [];\n\n\t\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tambiguous = true;\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\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar tmpHoles;\n\n\t\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\t\tshapes.push( tmpShape );\n\t\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//console.log(\"shape\", shapes);\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Font( data ) {\n\n\t\tthis.data = data;\n\n\t}\n\n\tObject.assign( Font.prototype, {\n\n\t\tisFont: true,\n\n\t\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\t\tfunction createPaths( text ) {\n\n\t\t\t\tvar chars = String( text ).split( '' );\n\t\t\t\tvar scale = size / data.resolution;\n\t\t\t\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\t\t\t\tvar offsetX = 0, offsetY = 0;\n\n\t\t\t\tvar paths = [];\n\n\t\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\t\tvar char = chars[ i ];\n\n\t\t\t\t\tif ( char === '\\n' ) {\n\n\t\t\t\t\t\toffsetX = 0;\n\t\t\t\t\t\toffsetY -= line_height;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar ret = createPath( char, scale, offsetX, offsetY );\n\t\t\t\t\t\toffsetX += ret.offsetX;\n\t\t\t\t\t\tpaths.push( ret.path );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn paths;\n\n\t\t\t}\n\n\t\t\tfunction createPath( c, scale, offsetX, offsetY ) {\n\n\t\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\t\tif ( ! glyph ) return;\n\n\t\t\t\tvar path = new ShapePath();\n\n\t\t\t\tvar pts = [];\n\t\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\t\tif ( glyph.o ) {\n\n\t\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\t\tcpx  = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\tcpy  = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\t\tQuadraticBezier( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\t\tQuadraticBezier( t, cpy0, cpy1, cpy );\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\tbreak;\n\n\t\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\t\tcpx  = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\tcpy  = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\t\tCubicBezier( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\t\tCubicBezier( t, cpy0, cpy1, cpy2, cpy );\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\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn { offsetX: glyph.ha * scale, path: path };\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( size === undefined ) size = 100;\n\t\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\t\tvar data = this.data;\n\n\t\t\tvar paths = createPaths( text );\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction FontLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( FontLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tvar json;\n\n\t\t\t\ttry {\n\n\t\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t\t}\n\n\t\t\t\tvar font = scope.parse( json );\n\n\t\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\treturn new Font( json );\n\n\t\t}\n\n\t} );\n\n\tvar context;\n\n\tvar AudioContext = {\n\n\t\tgetContext: function () {\n\n\t\t\tif ( context === undefined ) {\n\n\t\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t\t}\n\n\t\t\treturn context;\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\t/**\n\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\n\t */\n\n\tfunction AudioLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t}\n\n\tObject.assign( AudioLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar context = AudioContext.getContext();\n\n\t\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction StereoCamera() {\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}\n\n\tObject.assign( StereoCamera.prototype, {\n\n\t\tupdate: ( function () {\n\n\t\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\t\tvar eyeRight = new Matrix4();\n\t\t\tvar eyeLeft = new Matrix4();\n\n\t\t\treturn function update( camera ) {\n\n\t\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t\tinstance = this;\n\t\t\t\t\tfocus = camera.focus;\n\t\t\t\t\tfov = camera.fov;\n\t\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\t\tnear = camera.near;\n\t\t\t\t\tfar = camera.far;\n\t\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t\t// translate xOffset\n\n\t\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t\t// for left eye\n\n\t\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t\t// for right eye\n\n\t\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t/**\n\t * Camera for rendering cube maps\n\t *\t- renders scene into axis-aligned cube\n\t *\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction CubeCamera( near, far, cubeResolution ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tvar fov = 90, aspect = 1;\n\n\t\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\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\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\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\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\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\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\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\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\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\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\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\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\t\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\t\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\t\tthis.update = function ( renderer, scene ) {\n\n\t\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\t\tvar renderTarget = this.renderTarget;\n\t\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\t\trenderTarget.activeCubeFace = 0;\n\t\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 1;\n\t\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 2;\n\t\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 3;\n\t\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 4;\n\t\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\t\trenderTarget.activeCubeFace = 5;\n\t\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\t\trenderer.setRenderTarget( null );\n\n\t\t};\n\n\t\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\t\tvar renderTarget = this.renderTarget;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTarget.activeCubeFace = i;\n\t\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t\t}\n\n\t\t\trenderer.setRenderTarget( null );\n\n\t\t};\n\n\t}\n\n\tCubeCamera.prototype = Object.create( Object3D.prototype );\n\tCubeCamera.prototype.constructor = CubeCamera;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction AudioListener() {\n\n\t\tObject3D.call( this );\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}\n\n\tAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: AudioListener,\n\n\t\tgetInput: function () {\n\n\t\t\treturn this.gain;\n\n\t\t},\n\n\t\tremoveFilter: function ( ) {\n\n\t\t\tif ( this.filter !== null ) {\n\n\t\t\t\tthis.gain.disconnect( this.filter );\n\t\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\t\tthis.gain.connect( this.context.destination );\n\t\t\t\tthis.filter = null;\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetFilter: function () {\n\n\t\t\treturn this.filter;\n\n\t\t},\n\n\t\tsetFilter: function ( value ) {\n\n\t\t\tif ( this.filter !== null ) {\n\n\t\t\t\tthis.gain.disconnect( this.filter );\n\t\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t\t} else {\n\n\t\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t\t}\n\n\t\t\tthis.filter = value;\n\t\t\tthis.gain.connect( this.filter );\n\t\t\tthis.filter.connect( this.context.destination );\n\n\t\t},\n\n\t\tgetMasterVolume: function () {\n\n\t\t\treturn this.gain.gain.value;\n\n\t\t},\n\n\t\tsetMasterVolume: function ( value ) {\n\n\t\t\tthis.gain.gain.value = value;\n\n\t\t},\n\n\t\tupdateMatrixWorld: ( function () {\n\n\t\t\tvar position = new Vector3();\n\t\t\tvar quaternion = new Quaternion();\n\t\t\tvar scale = new Vector3();\n\n\t\t\tvar orientation = new Vector3();\n\n\t\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\t\tvar listener = this.context.listener;\n\t\t\t\tvar up = this.up;\n\n\t\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\t\tif ( listener.positionX ) {\n\n\t\t\t\t\tlistener.positionX.setValueAtTime( position.x, this.context.currentTime );\n\t\t\t\t\tlistener.positionY.setValueAtTime( position.y, this.context.currentTime );\n\t\t\t\t\tlistener.positionZ.setValueAtTime( position.z, this.context.currentTime );\n\t\t\t\t\tlistener.forwardX.setValueAtTime( orientation.x, this.context.currentTime );\n\t\t\t\t\tlistener.forwardY.setValueAtTime( orientation.y, this.context.currentTime );\n\t\t\t\t\tlistener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime );\n\t\t\t\t\tlistener.upX.setValueAtTime( up.x, this.context.currentTime );\n\t\t\t\t\tlistener.upY.setValueAtTime( up.y, this.context.currentTime );\n\t\t\t\t\tlistener.upZ.setValueAtTime( up.z, this.context.currentTime );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\n\t */\n\n\tfunction Audio( listener ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.type = 'Audio';\n\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.loop = false;\n\t\tthis.startTime = 0;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis.filters = [];\n\n\t}\n\n\tAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\t\tconstructor: Audio,\n\n\t\tgetOutput: function () {\n\n\t\t\treturn this.gain;\n\n\t\t},\n\n\t\tsetNodeSource: function ( audioNode ) {\n\n\t\t\tthis.hasPlaybackControl = false;\n\t\t\tthis.sourceType = 'audioNode';\n\t\t\tthis.source = audioNode;\n\t\t\tthis.connect();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetBuffer: function ( audioBuffer ) {\n\n\t\t\tthis.buffer = audioBuffer;\n\t\t\tthis.sourceType = 'buffer';\n\n\t\t\tif ( this.autoplay ) this.play();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tplay: function () {\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar source = this.context.createBufferSource();\n\n\t\t\tsource.buffer = this.buffer;\n\t\t\tsource.loop = this.loop;\n\t\t\tsource.onended = this.onEnded.bind( this );\n\t\t\tsource.playbackRate.setValueAtTime( this.playbackRate, this.startTime );\n\t\t\tsource.start( 0, this.startTime );\n\n\t\t\tthis.isPlaying = true;\n\n\t\t\tthis.source = source;\n\n\t\t\treturn this.connect();\n\n\t\t},\n\n\t\tpause: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.startTime = this.context.currentTime;\n\t\t\tthis.isPlaying = false;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.startTime = 0;\n\t\t\tthis.isPlaying = false;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconnect: function () {\n\n\t\t\tif ( this.filters.length > 0 ) {\n\n\t\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t\t} else {\n\n\t\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdisconnect: function () {\n\n\t\t\tif ( this.filters.length > 0 ) {\n\n\t\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t\t} else {\n\n\t\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetFilters: function () {\n\n\t\t\treturn this.filters;\n\n\t\t},\n\n\t\tsetFilters: function ( value ) {\n\n\t\t\tif ( ! value ) value = [];\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tthis.disconnect();\n\t\t\t\tthis.filters = value;\n\t\t\t\tthis.connect();\n\n\t\t\t} else {\n\n\t\t\t\tthis.filters = value;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetFilter: function () {\n\n\t\t\treturn this.getFilters()[ 0 ];\n\n\t\t},\n\n\t\tsetFilter: function ( filter ) {\n\n\t\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t\t},\n\n\t\tsetPlaybackRate: function ( value ) {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.playbackRate = value;\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tthis.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetPlaybackRate: function () {\n\n\t\t\treturn this.playbackRate;\n\n\t\t},\n\n\t\tonEnded: function () {\n\n\t\t\tthis.isPlaying = false;\n\n\t\t},\n\n\t\tgetLoop: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn this.loop;\n\n\t\t},\n\n\t\tsetLoop: function ( value ) {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.loop = value;\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tthis.source.loop = this.loop;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetVolume: function () {\n\n\t\t\treturn this.gain.gain.value;\n\n\t\t},\n\n\t\tsetVolume: function ( value ) {\n\n\t\t\tthis.gain.gain.value = value;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction PositionalAudio( listener ) {\n\n\t\tAudio.call( this, listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\t\tconstructor: PositionalAudio,\n\n\t\tgetOutput: function () {\n\n\t\t\treturn this.panner;\n\n\t\t},\n\n\t\tgetRefDistance: function () {\n\n\t\t\treturn this.panner.refDistance;\n\n\t\t},\n\n\t\tsetRefDistance: function ( value ) {\n\n\t\t\tthis.panner.refDistance = value;\n\n\t\t},\n\n\t\tgetRolloffFactor: function () {\n\n\t\t\treturn this.panner.rolloffFactor;\n\n\t\t},\n\n\t\tsetRolloffFactor: function ( value ) {\n\n\t\t\tthis.panner.rolloffFactor = value;\n\n\t\t},\n\n\t\tgetDistanceModel: function () {\n\n\t\t\treturn this.panner.distanceModel;\n\n\t\t},\n\n\t\tsetDistanceModel: function ( value ) {\n\n\t\t\tthis.panner.distanceModel = value;\n\n\t\t},\n\n\t\tgetMaxDistance: function () {\n\n\t\t\treturn this.panner.maxDistance;\n\n\t\t},\n\n\t\tsetMaxDistance: function ( value ) {\n\n\t\t\tthis.panner.maxDistance = value;\n\n\t\t},\n\n\t\tupdateMatrixWorld: ( function () {\n\n\t\t\tvar position = new Vector3();\n\n\t\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t\t};\n\n\t\t} )()\n\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction AudioAnalyser( audio, fftSize ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\tObject.assign( AudioAnalyser.prototype, {\n\n\t\tgetFrequencyData: function () {\n\n\t\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\t\treturn this.data;\n\n\t\t},\n\n\t\tgetAverageFrequency: function () {\n\n\t\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tvalue += data[ i ];\n\n\t\t\t}\n\n\t\t\treturn value / data.length;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * Buffered scene graph property that allows weighted accumulation.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tvar bufferType = Float64Array,\n\t\t\tmixFunction;\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tbufferType = Array;\n\t\t\t\tmixFunction = this._select;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\n\t\t}\n\n\t\tthis.buffer = new bufferType( valueSize * 4 );\n\t\t// layout: [ incoming | accu0 | accu1 | orig ]\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\n\t\tthis._mixBufferRegion = mixFunction;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\tObject.assign( PropertyMixer.prototype, {\n\n\t\t// accumulate data in the 'incoming' region into 'accu<i>'\n\t\taccumulate: function ( accuIndex, weight ) {\n\n\t\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t\t// the weight and shouldn't have made the call in the first place\n\n\t\t\tvar buffer = this.buffer,\n\t\t\t\tstride = this.valueSize,\n\t\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\t\tif ( currentWeight === 0 ) {\n\n\t\t\t\t// accuN := incoming * weight\n\n\t\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcurrentWeight = weight;\n\n\t\t\t} else {\n\n\t\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\t\tcurrentWeight += weight;\n\t\t\t\tvar mix = weight / currentWeight;\n\t\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t\t}\n\n\t\t\tthis.cumulativeWeight = currentWeight;\n\n\t\t},\n\n\t\t// apply the state of 'accu<i>' to the binding when accus differ\n\t\tapply: function ( accuIndex ) {\n\n\t\t\tvar stride = this.valueSize,\n\t\t\t\tbuffer = this.buffer,\n\t\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\t\tweight = this.cumulativeWeight,\n\n\t\t\t\tbinding = this.binding;\n\n\t\t\tthis.cumulativeWeight = 0;\n\n\t\t\tif ( weight < 1 ) {\n\n\t\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\t\tthis._mixBufferRegion(\n\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t\t}\n\n\t\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t// remember the state of the bound property and copy it to both accus\n\t\tsaveOriginalState: function () {\n\n\t\t\tvar binding = this.binding;\n\n\t\t\tvar buffer = this.buffer,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toriginalValueOffset = stride * 3;\n\n\t\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t\t}\n\n\t\t\tthis.cumulativeWeight = 0;\n\n\t\t},\n\n\t\t// apply the state previously taken via 'saveOriginalState' to the binding\n\t\trestoreOriginalState: function () {\n\n\t\t\tvar originalValueOffset = this.valueSize * 3;\n\t\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t\t},\n\n\n\t\t// mix functions\n\n\t\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\t\tif ( t >= 0.5 ) {\n\n\t\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t\t},\n\n\t\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\t\tvar s = 1 - t;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tvar j = dstOffset + i;\n\n\t\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * A reference to a real property in the scene graph.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\t\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tObject.assign( Composite.prototype, {\n\n\t\tgetValue: function ( array, offset ) {\n\n\t\t\tthis.bind(); // bind all binding\n\n\t\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t\t// and only call .getValue on the first\n\t\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t\t},\n\n\t\tsetValue: function ( array, offset ) {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t\t}\n\n\t\t},\n\n\t\tbind: function () {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].bind();\n\n\t\t\t}\n\n\t\t},\n\n\t\tunbind: function () {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].unbind();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\n\tfunction PropertyBinding( 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}\n\n\tObject.assign( PropertyBinding, {\n\n\t\tComposite: Composite,\n\n\t\tcreate: function ( root, path, parsedPath ) {\n\n\t\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t\t} else {\n\n\t\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Replaces spaces with underscores and removes unsupported characters from\n\t\t * node names, to ensure compatibility with parseTrackName().\n\t\t *\n\t\t * @param  {string} name Node name to be sanitized.\n\t\t * @return {string}\n\t\t */\n\t\tsanitizeNodeName: function ( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( /[^\\w-]/g, '' );\n\n\t\t},\n\n\t\tparseTrackName: function () {\n\n\t\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t\t// be matched to parse the rest of the track name.\n\t\t\tvar directoryRe = /((?:[\\w-]+[\\/:])*)/;\n\n\t\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\t\tvar nodeRe = /([\\w-\\.]+)?/;\n\n\t\t\t// Object on target node, and accessor. Name may contain only word\n\t\t\t// characters. Accessor may contain any character except closing bracket.\n\t\t\tvar objectRe = /(?:\\.([\\w-]+)(?:\\[(.+)\\])?)?/;\n\n\t\t\t// Property and accessor. May contain only word characters. Accessor may\n\t\t\t// contain any non-bracket characters.\n\t\t\tvar propertyRe = /\\.([\\w-]+)(?:\\[(.+)\\])?/;\n\n\t\t\tvar trackRe = new RegExp(''\n\t\t\t\t+ '^'\n\t\t\t\t+ directoryRe.source\n\t\t\t\t+ nodeRe.source\n\t\t\t\t+ objectRe.source\n\t\t\t\t+ propertyRe.source\n\t\t\t\t+ '$'\n\t\t\t);\n\n\t\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\t\treturn function ( trackName ) {\n\n\t\t\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\t\t\tif ( ! matches ) {\n\n\t\t\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar results = {\n\t\t\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\t\t\tpropertyName: matches[ 5 ],     // required\n\t\t\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t\t\t};\n\n\t\t\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\t\t\tif ( lastDot !== undefined && lastDot !== -1 ) {\n\n\t\t\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t\t\t// include '.' characters).\n\t\t\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== -1 ) {\n\n\t\t\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn results;\n\n\t\t\t\t};\n\n\t\t}(),\n\n\t\tfindNode: function ( root, nodeName ) {\n\n\t\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\t\treturn root;\n\n\t\t\t}\n\n\t\t\t// search into skeleton bones.\n\t\t\tif ( root.skeleton ) {\n\n\t\t\t\tvar searchSkeleton = function ( skeleton ) {\n\n\t\t\t\t\tfor ( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\t\t\treturn bone;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t};\n\n\t\t\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\t\t\tif ( bone ) {\n\n\t\t\t\t\treturn bone;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// search into node subtree.\n\t\t\tif ( root.children ) {\n\n\t\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t};\n\n\t\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\t\tif ( subTreeNode ) {\n\n\t\t\t\t\treturn subTreeNode;\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\tObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t\t// these are used to \"bind\" a nonexistent property\n\t\t_getValue_unavailable: function () {},\n\t\t_setValue_unavailable: function () {},\n\n\t\tBindingType: {\n\t\t\tDirect: 0,\n\t\t\tEntireArray: 1,\n\t\t\tArrayElement: 2,\n\t\t\tHasFromToArray: 3\n\t\t},\n\n\t\tVersioning: {\n\t\t\tNone: 0,\n\t\t\tNeedsUpdate: 1,\n\t\t\tMatrixWorldNeedsUpdate: 2\n\t\t},\n\n\t\tGetterByBindingType: [\n\n\t\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t\t},\n\n\t\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\t\tvar source = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t\t},\n\n\t\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t\t}\n\n\t\t],\n\n\t\tSetterByBindingTypeAndVersioning: [\n\n\t\t\t[\n\t\t\t\t// Direct\n\n\t\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// EntireArray\n\n\t\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// ArrayElement\n\n\t\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// HasToFromArray\n\n\t\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t]\n\n\t\t],\n\n\t\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\t\tthis.bind();\n\t\t\tthis.getValue( targetArray, offset );\n\n\t\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t\t// prototype version of these methods with one that represents\n\t\t\t// the bound state. When the property is not found, the methods\n\t\t\t// become no-ops.\n\n\t\t},\n\n\t\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\t\tthis.bind();\n\t\t\tthis.setValue( sourceArray, offset );\n\n\t\t},\n\n\t\t// create getter / setter pair for a property in the scene graph\n\t\tbind: function () {\n\n\t\t\tvar targetObject = this.node,\n\t\t\t\tparsedPath = this.parsedPath,\n\n\t\t\t\tobjectName = parsedPath.objectName,\n\t\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\t\tif ( ! targetObject ) {\n\n\t\t\t\ttargetObject = PropertyBinding.findNode(\n\t\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\t\tthis.node = targetObject;\n\n\t\t\t}\n\n\t\t\t// set fail state so we can just 'return' on error\n\t\t\tthis.getValue = this._getValue_unavailable;\n\t\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t\t// ensure there is a value node\n\t\t\tif ( ! targetObject ) {\n\n\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( objectName ) {\n\n\t\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\t\tswitch ( objectName ) {\n\n\t\t\t\t\tcase 'materials':\n\n\t\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bones':\n\n\t\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t\t}\n\n\n\t\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// resolve property\n\t\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\t\tif ( nodeProperty === undefined ) {\n\n\t\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// determine versioning scheme\n\t\t\tvar versioning = this.Versioning.None;\n\n\t\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\t\tthis.targetObject = targetObject;\n\n\t\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\t\tthis.targetObject = targetObject;\n\n\t\t\t}\n\n\t\t\t// determine how the property gets bound\n\t\t\tvar bindingType = this.BindingType.Direct;\n\n\t\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\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\t// support resolving morphTarget names into indices.\n\t\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\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\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\t\tbreak;\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\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t\t} else {\n\n\t\t\t\tthis.propertyName = propertyName;\n\n\t\t\t}\n\n\t\t\t// select getter / setter\n\t\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t\t},\n\n\t\tunbind: function () {\n\n\t\t\tthis.node = null;\n\n\t\t\t// back to the prototype version of getValue / setValue\n\t\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\t\tthis.getValue = this._getValue_unbound;\n\t\t\tthis.setValue = this._setValue_unbound;\n\n\t\t}\n\n\t} );\n\n\t//!\\ DECLARE ALIAS AFTER assign prototype !\n\tObject.assign( PropertyBinding.prototype, {\n\n\t\t// initial state of these methods that calls 'bind'\n\t\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n\t} );\n\n\t/**\n\t *\n\t * A group of objects that receives a shared animation state.\n\t *\n\t * Usage:\n\t *\n\t * \t-\tAdd objects you would otherwise pass as 'root' to the\n\t * \t\tconstructor or the .clipAction method of AnimationMixer.\n\t *\n\t * \t-\tInstead pass this object as 'root'.\n\t *\n\t * \t-\tYou can also add and remove objects later when the mixer\n\t * \t\tis running.\n\t *\n\t * Note:\n\t *\n\t *  \tObjects of this class appear as one object to the mixer,\n\t *  \tso cache control of the individual objects must be done\n\t *  \ton the group.\n\t *\n\t * Limitation:\n\t *\n\t * \t- \tThe animated properties must be compatible among the\n\t * \t\tall objects in the group.\n\t *\n\t *  -\tA single property can either be controlled through a\n\t *  \ttarget group or directly, but not both.\n\t *\n\t * @author tschw\n\t */\n\n\tfunction AnimationObjectGroup( var_args ) {\n\n\t\tthis.uuid = _Math.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;\t\t\t// threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tvar indices = {};\n\t\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\t\tfor ( var 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 = [];\t\t\t\t\t// inside: string\n\t\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\t\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() { return scope._objects.length; },\n\t\t\t\tget inUse() { return this.total - scope.nCachedObjects_; }\n\t\t\t},\n\n\t\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t\t};\n\n\t}\n\n\tObject.assign( AnimationObjectGroup.prototype, {\n\n\t\tisAnimationObjectGroup: true,\n\n\t\tadd: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tpaths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ],\n\t\t\t\t\tknownObject = undefined;\n\n\t\t\t\tif ( index === undefined ) {\n\n\t\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\t\tindex = nObjects ++;\n\t\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\t\tnew PropertyBinding(\n\t\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\t\tbinding = new PropertyBinding(\n\t\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t\t} // else the object is already where we want it to be\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\tremove: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\t// remove & forget\n\t\tuncache: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} // cached or active\n\n\t\t\t\t} // if object is known\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\t\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t\t// returns an array of bindings for the given path that is changed\n\t\t\t// according to the contained objects in the group\n\n\t\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\t\tindex = indicesByPath[ path ],\n\t\t\t\tbindings = this._bindings;\n\n\t\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tobjects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\t\tindex = bindings.length;\n\n\t\t\tindicesByPath[ path ] = index;\n\n\t\t\tpaths.push( path );\n\t\t\tparsedPaths.push( parsedPath );\n\t\t\tbindings.push( bindingsForPath );\n\n\t\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = objects[ i ];\n\t\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t\t}\n\n\t\t\treturn bindingsForPath;\n\n\t\t},\n\n\t\tunsubscribe_: function ( path ) {\n\n\t\t\t// tells the group to forget about a property path and no longer\n\t\t\t// update the array previously obtained with 'subscribe_'\n\n\t\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\t\tindex = indicesByPath[ path ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tvar paths = this._paths,\n\t\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\t\tbindings[ index ] = lastBindings;\n\t\t\t\tbindings.pop();\n\n\t\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\t\tparsedPaths.pop();\n\n\t\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\t\tpaths.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * Action provided by AnimationMixer for scheduling clip playback on specific\n\t * objects.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t *\n\t */\n\n\tfunction AnimationAction( mixer, clip, localRoot ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot || null;\n\n\t\tvar tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tvar interpolantSettings = {\n\t\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar 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;\t// 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;\t\t\t// for the memory manager\n\t\tthis._byClipCacheIndex = null;\t\t// 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; \t\t// no. of repetitions when looping\n\n\t\tthis.paused = false;\t\t\t\t// true -> zero effective time scale\n\t\tthis.enabled = true;\t\t\t\t// false -> zero effective weight\n\n\t\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n\t}\n\n\tObject.assign( AnimationAction.prototype, {\n\n\t\t// State & Scheduling\n\n\t\tplay: function() {\n\n\t\t\tthis._mixer._activateAction( this );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstop: function() {\n\n\t\t\tthis._mixer._deactivateAction( this );\n\n\t\t\treturn this.reset();\n\n\t\t},\n\n\t\treset: function() {\n\n\t\t\tthis.paused = false;\n\t\t\tthis.enabled = true;\n\n\t\t\tthis.time = 0;\t\t\t// restart clip\n\t\t\tthis._loopCount = -1;\t// forget previous loops\n\t\t\tthis._startTime = null;\t// forget scheduling\n\n\t\t\treturn this.stopFading().stopWarping();\n\n\t\t},\n\n\t\tisRunning: function() {\n\n\t\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t\t},\n\n\t\t// return true when play has been called\n\t\tisScheduled: function() {\n\n\t\t\treturn this._mixer._isActiveAction( this );\n\n\t\t},\n\n\t\tstartAt: function( time ) {\n\n\t\t\tthis._startTime = time;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetLoop: function( mode, repetitions ) {\n\n\t\t\tthis.loop = mode;\n\t\t\tthis.repetitions = repetitions;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Weight\n\n\t\t// set the weight stopping any scheduled fading\n\t\t// although .enabled = false yields an effective weight of zero, this\n\t\t// method does *not* change .enabled, because it would be confusing\n\t\tsetEffectiveWeight: function( weight ) {\n\n\t\t\tthis.weight = weight;\n\n\t\t\t// note: same logic as when updated at runtime\n\t\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\t\treturn this.stopFading();\n\n\t\t},\n\n\t\t// return the weight considering fading and .enabled\n\t\tgetEffectiveWeight: function() {\n\n\t\t\treturn this._effectiveWeight;\n\n\t\t},\n\n\t\tfadeIn: function( duration ) {\n\n\t\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t\t},\n\n\t\tfadeOut: function( duration ) {\n\n\t\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t\t},\n\n\t\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\t\tfadeOutAction.fadeOut( duration );\n\t\t\tthis.fadeIn( duration );\n\n\t\t\tif( warp ) {\n\n\t\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t\t},\n\n\t\tstopFading: function() {\n\n\t\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\t\tif ( weightInterpolant !== null ) {\n\n\t\t\t\tthis._weightInterpolant = null;\n\t\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Time Scale Control\n\n\t\t// set the time scale stopping any scheduled warping\n\t\t// although .paused = true yields an effective time scale of zero, this\n\t\t// method does *not* change .paused, because it would be confusing\n\t\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\t\tthis.timeScale = timeScale;\n\t\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\t// return the time scale considering warping and .paused\n\t\tgetEffectiveTimeScale: function() {\n\n\t\t\treturn this._effectiveTimeScale;\n\n\t\t},\n\n\t\tsetDuration: function( duration ) {\n\n\t\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\tsyncWith: function( action ) {\n\n\t\t\tthis.time = action.time;\n\t\t\tthis.timeScale = action.timeScale;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\thalt: function( duration ) {\n\n\t\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t\t},\n\n\t\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\t\ttimeScale = this.timeScale;\n\n\t\t\tif ( interpolant === null ) {\n\n\t\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t\t}\n\n\t\t\tvar times = interpolant.parameterPositions,\n\t\t\t\tvalues = interpolant.sampleValues;\n\n\t\t\ttimes[ 0 ] = now;\n\t\t\ttimes[ 1 ] = now + duration;\n\n\t\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstopWarping: function() {\n\n\t\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\t\tthis._timeScaleInterpolant = null;\n\t\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Object Accessors\n\n\t\tgetMixer: function() {\n\n\t\t\treturn this._mixer;\n\n\t\t},\n\n\t\tgetClip: function() {\n\n\t\t\treturn this._clip;\n\n\t\t},\n\n\t\tgetRoot: function() {\n\n\t\t\treturn this._localRoot || this._mixer._root;\n\n\t\t},\n\n\t\t// Interna\n\n\t\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t\t// called by the mixer\n\n\t\t\tif ( ! this.enabled ) {\n\n\t\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\t\tthis._updateWeight( time );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar startTime = this._startTime;\n\n\t\t\tif ( startTime !== null ) {\n\n\t\t\t\t// check for scheduled start of action\n\n\t\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t\t}\n\n\t\t\t\t// start\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t\t// apply time scale and advance time\n\n\t\t\tdeltaTime *= this._updateTimeScale( time );\n\t\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t\t// note: _updateTime may disable the action resulting in\n\t\t\t// an effective weight of 0\n\n\t\t\tvar weight = this._updateWeight( time );\n\n\t\t\tif ( weight > 0 ) {\n\n\t\t\t\tvar interpolants = this._interpolants;\n\t\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_updateWeight: function( time ) {\n\n\t\t\tvar weight = 0;\n\n\t\t\tif ( this.enabled ) {\n\n\t\t\t\tweight = this.weight;\n\t\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\t\tthis.enabled = 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\tthis._effectiveWeight = weight;\n\t\t\treturn weight;\n\n\t\t},\n\n\t\t_updateTimeScale: function( time ) {\n\n\t\t\tvar timeScale = 0;\n\n\t\t\tif ( ! this.paused ) {\n\n\t\t\t\ttimeScale = this.timeScale;\n\n\t\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\t\tthis.timeScale = timeScale;\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\tthis._effectiveTimeScale = timeScale;\n\t\t\treturn timeScale;\n\n\t\t},\n\n\t\t_updateTime: function( deltaTime ) {\n\n\t\t\tvar time = this.time + deltaTime;\n\n\t\t\tif ( deltaTime === 0 ) return time;\n\n\t\t\tvar duration = this._clip.duration,\n\n\t\t\t\tloop = this.loop,\n\t\t\t\tloopCount = this._loopCount;\n\n\t\t\tif ( loop === LoopOnce ) {\n\n\t\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t\t// just started\n\n\t\t\t\t\tthis._loopCount = 0;\n\t\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t\t}\n\n\t\t\t\thandle_stop: {\n\n\t\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\t\ttime = duration;\n\n\t\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\t\ttime = 0;\n\n\t\t\t\t\t} else break handle_stop;\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\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}\n\n\t\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t\t// just started\n\n\t\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t\t// wrap around\n\n\t\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// keep running\n\n\t\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\t\tthis.time = time;\n\t\t\t\t\treturn duration - time;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.time = time;\n\t\t\treturn time;\n\n\t\t},\n\n\t\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\t\tvar settings = this._interpolantSettings;\n\n\t\t\tif ( pingPong ) {\n\n\t\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t\t} else {\n\n\t\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\t\tif ( atStart ) {\n\n\t\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t\t}\n\n\t\t\t\tif ( atEnd ) {\n\n\t\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\t\tinterpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant === null ) {\n\n\t\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t\t}\n\n\t\t\tvar times = interpolant.parameterPositions,\n\t\t\t\tvalues = interpolant.sampleValues;\n\n\t\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t *\n\t * Player for AnimationClips.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tfunction AnimationMixer( root ) {\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\tObject.assign( AnimationMixer.prototype, EventDispatcher.prototype, {\n\n\t\t_bindAction: function ( action, prototypeAction ) {\n\n\t\t\tvar root = action._localRoot || this._root,\n\t\t\t\ttracks = action._clip.tracks,\n\t\t\t\tnTracks = tracks.length,\n\t\t\t\tbindings = action._propertyBindings,\n\t\t\t\tinterpolants = action._interpolants,\n\t\t\t\trootUuid = root.uuid,\n\t\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\t\tif ( bindingsByName === undefined ) {\n\n\t\t\t\tbindingsByName = {};\n\t\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\t\tvar track = tracks[ i ],\n\t\t\t\t\ttrackName = track.name,\n\t\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t\t}\n\n\t\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t\t}\n\n\t\t},\n\n\t\t_activateAction: function ( action ) {\n\n\t\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t\t}\n\n\t\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t\t// increment reference counts / sort out state\n\t\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis._lendAction( action );\n\n\t\t\t}\n\n\t\t},\n\n\t\t_deactivateAction: function ( action ) {\n\n\t\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t\t// decrement reference counts / sort out state\n\t\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis._takeBackAction( action );\n\n\t\t\t}\n\n\t\t},\n\n\t\t// Memory manager\n\n\t\t_initMemoryManager: function () {\n\n\t\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\t\tthis._nActiveActions = 0;\n\n\t\t\tthis._actionsByClip = {};\n\t\t\t// inside:\n\t\t\t// {\n\t\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t\t// }\n\n\n\t\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\t\tthis._nActiveBindings = 0;\n\n\t\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\t\tthis._controlInterpolants = []; // same game as above\n\t\t\tthis._nActiveControlInterpolants = 0;\n\n\t\t\tvar scope = this;\n\n\t\t\tthis.stats = {\n\n\t\t\t\tactions: {\n\t\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t\t},\n\t\t\t\tbindings: {\n\t\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t\t},\n\t\t\t\tcontrolInterpolants: {\n\t\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t},\n\n\t\t// Memory management for AnimationAction objects\n\n\t\t_isActiveAction: function ( action ) {\n\n\t\t\tvar index = action._cacheIndex;\n\t\t\treturn index !== null && index < this._nActiveActions;\n\n\t\t},\n\n\t\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip === undefined ) {\n\n\t\t\t\tactionsForClip = {\n\n\t\t\t\t\tknownActions: [ action ],\n\t\t\t\t\tactionByRoot: {}\n\n\t\t\t\t};\n\n\t\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t\t} else {\n\n\t\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\t\tknownActions.push( action );\n\n\t\t\t}\n\n\t\t\taction._cacheIndex = actions.length;\n\t\t\tactions.push( action );\n\n\t\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t\t},\n\n\t\t_removeInactiveAction: function ( action ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\t\tcacheIndex = action._cacheIndex;\n\n\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\tactions.pop();\n\n\t\t\taction._cacheIndex = null;\n\n\n\t\t\tvar clipUuid = action._clip.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\t\tlastKnownAction =\n\t\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\t\tknownActionsForClip.pop();\n\n\t\t\taction._byClipCacheIndex = null;\n\n\n\t\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\t\tdelete actionByRoot[ rootUuid ];\n\n\t\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t\t}\n\n\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t},\n\n\t\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_lendAction: function ( action ) {\n\n\t\t\t// [ active actions |  inactive actions  ]\n\t\t\t// [  active actions >| inactive actions ]\n\t\t\t//                 s        a\n\t\t\t//                  <-swap->\n\t\t\t//                 a        s\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\t\taction._cacheIndex = lastActiveIndex;\n\t\t\tactions[ lastActiveIndex ] = action;\n\n\t\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t\t},\n\n\t\t_takeBackAction: function ( action ) {\n\n\t\t\t// [  active actions  | inactive actions ]\n\t\t\t// [ active actions |< inactive actions  ]\n\t\t\t//        a        s\n\t\t\t//         <-swap->\n\t\t\t//        s        a\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\t\taction._cacheIndex = firstInactiveIndex;\n\t\t\tactions[ firstInactiveIndex ] = action;\n\n\t\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t\t},\n\n\t\t// Memory management for PropertyMixer objects\n\n\t\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\t\tbindings = this._bindings;\n\n\t\t\tif ( bindingByName === undefined ) {\n\n\t\t\t\tbindingByName = {};\n\t\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t\t}\n\n\t\t\tbindingByName[ trackName ] = binding;\n\n\t\t\tbinding._cacheIndex = bindings.length;\n\t\t\tbindings.push( binding );\n\n\t\t},\n\n\t\t_removeInactiveBinding: function ( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tpropBinding = binding.binding,\n\t\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\t\ttrackName = propBinding.path,\n\t\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\t\tbindings.pop();\n\n\t\t\tdelete bindingByName[ trackName ];\n\n\t\t\tremove_empty_map: {\n\n\t\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t\t}\n\n\t\t},\n\n\t\t_lendBinding: function ( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\t\tbinding._cacheIndex = lastActiveIndex;\n\t\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t\t},\n\n\t\t_takeBackBinding: function ( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t\t},\n\n\n\t\t// Memory management of Interpolants for weight and time scale\n\n\t\t_lendControlInterpolant: function () {\n\n\t\t\tvar interpolants = this._controlInterpolants,\n\t\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\t\tif ( interpolant === undefined ) {\n\n\t\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t\t}\n\n\t\t\treturn interpolant;\n\n\t\t},\n\n\t\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\t\tvar interpolants = this._controlInterpolants,\n\t\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t\t},\n\n\t\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t\t// return an action for a clip optionally using a custom root target\n\t\t// object (this method allocates a lot of dynamic memory in case a\n\t\t// previously unknown clip/root combination is specified)\n\t\tclipAction: function ( clip, optionalRoot ) {\n\n\t\t\tvar root = optionalRoot || this._root,\n\t\t\t\trootUuid = root.uuid,\n\n\t\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\t\tprototypeAction = null;\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\tvar existingAction =\n\t\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\t\treturn existingAction;\n\n\t\t\t\t}\n\n\t\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t\t// the bindings again but can just copy\n\t\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t\t// also, take the clip from the prototype action\n\t\t\t\tif ( clipObject === null )\n\t\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t\t}\n\n\t\t\t// clip must be known when specified via string\n\t\t\tif ( clipObject === null ) return null;\n\n\t\t\t// allocate all resources required to run it\n\t\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t\t// and make the action known to the memory manager\n\t\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\t\treturn newAction;\n\n\t\t},\n\n\t\t// get an existing action\n\t\texistingAction: function ( clip, optionalRoot ) {\n\n\t\t\tvar root = optionalRoot || this._root,\n\t\t\t\trootUuid = root.uuid,\n\n\t\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t},\n\n\t\t// deactivates all previously scheduled actions\n\t\tstopAllAction: function () {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tnActions = this._nActiveActions,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = this._nActiveBindings;\n\n\t\t\tthis._nActiveActions = 0;\n\t\t\tthis._nActiveBindings = 0;\n\n\t\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\t\tactions[ i ].reset();\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\t\tbindings[ i ].useCount = 0;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// advance the time and update apply the animation\n\t\tupdate: function ( deltaTime ) {\n\n\t\t\tdeltaTime *= this.timeScale;\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tnActions = this._nActiveActions,\n\n\t\t\t\ttime = this.time += deltaTime,\n\t\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t\t// run active actions\n\n\t\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\t\tvar action = actions[ i ];\n\n\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t}\n\n\t\t\t// update scene graph\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tnBindings = this._nActiveBindings;\n\n\t\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// return this mixer's root target object\n\t\tgetRoot: function () {\n\n\t\t\treturn this._root;\n\n\t\t},\n\n\t\t// free all resources specific to a particular clip\n\t\tuncacheClip: function ( clip ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tclipUuid = clip.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t\t// iteration state and also require updating the state we can\n\t\t\t\t// just throw away\n\n\t\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\t\taction._cacheIndex = null;\n\t\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\t\tactions.pop();\n\n\t\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t\t}\n\n\t\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t\t}\n\n\t\t},\n\n\t\t// free all resources specific to a particular root target object\n\t\tuncacheRoot: function ( root ) {\n\n\t\t\tvar rootUuid = root.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip;\n\n\t\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\t\tif ( action !== undefined ) {\n\n\t\t\t\t\tthis._deactivateAction( action );\n\t\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\t\tif ( bindingByName !== undefined ) {\n\n\t\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t// remove a targeted clip from the cache\n\t\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\t\tif ( action !== null ) {\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} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Uniform( 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\tUniform.prototype.clone = function () {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t};\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tfunction InstancedBufferGeometry() {\n\n\t\tBufferGeometry.call( this );\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.maxInstancedCount = undefined;\n\n\t}\n\n\tInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\t\tconstructor: InstancedBufferGeometry,\n\n\t\tisInstancedBufferGeometry: true,\n\n\t\taddGroup: function ( start, count, materialIndex ) {\n\n\t\t\tthis.groups.push( {\n\n\t\t\t\tstart: start,\n\t\t\t\tcount: count,\n\t\t\t\tmaterialIndex: materialIndex\n\n\t\t\t} );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tvar index = source.index;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tthis.setIndex( index.clone() );\n\n\t\t\t}\n\n\t\t\tvar attributes = source.attributes;\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ name ];\n\t\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t\t}\n\n\t\t\tvar groups = source.groups;\n\n\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\t\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\t\tthis.uuid = _Math.generateUUID();\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\tObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\t\tcount: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.data.count;\n\n\t\t\t}\n\n\t\t},\n\n\t\tarray: {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.data.array;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tObject.assign( InterleavedBufferAttribute.prototype, {\n\n\t\tisInterleavedBufferAttribute: true,\n\n\t\tsetX: function ( index, x ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( index, y ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( index, z ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetW: function ( index, w ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetX: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t\t},\n\n\t\tgetY: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\t},\n\n\t\tgetZ: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\t},\n\n\t\tgetW: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\t},\n\n\t\tsetXY: function ( index, x, y ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZ: function ( index, x, y, z ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\t\t\tthis.data.array[ index + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\t\t\tthis.data.array[ index + 2 ] = z;\n\t\t\tthis.data.array[ index + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tfunction InterleavedBuffer( array, stride ) {\n\n\t\tthis.uuid = _Math.generateUUID();\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.dynamic = false;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.onUploadCallback = function () {};\n\n\t\tthis.version = 0;\n\n\t}\n\n\tObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\t\tset: function ( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( InterleavedBuffer.prototype, {\n\n\t\tisInterleavedBuffer: true,\n\n\t\tsetArray: function ( array ) {\n\n\t\t\tif ( Array.isArray( array ) ) {\n\n\t\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t\t}\n\n\t\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\t\tthis.array = array;\n\n\t\t},\n\n\t\tsetDynamic: function ( value ) {\n\n\t\t\tthis.dynamic = value;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.array = new source.array.constructor( source.array );\n\t\t\tthis.count = source.count;\n\t\t\tthis.stride = source.stride;\n\t\t\tthis.dynamic = source.dynamic;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\t\tindex1 *= this.stride;\n\t\t\tindex2 *= attribute.stride;\n\n\t\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tset: function ( value, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.array.set( value, offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tonUpload: function ( callback ) {\n\n\t\t\tthis.onUploadCallback = callback;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\t\tInterleavedBuffer.call( this, array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n\t}\n\n\tInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\t\tconstructor: InstancedInterleavedBuffer,\n\n\t\tisInstancedInterleavedBuffer: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\t\tBufferAttribute.call( this, array, itemSize );\n\n\t\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n\t}\n\n\tInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\t\tconstructor: InstancedBufferAttribute,\n\n\t\tisInstancedBufferAttribute: true,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author bhouston / http://clara.io/\n\t * @author stephomi / http://stephaneginier.com/\n\t */\n\n\tfunction Raycaster( origin, direction, near, far ) {\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 || 0;\n\t\tthis.far = far || Infinity;\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: {},\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t\tObject.defineProperties( this.params, {\n\t\t\tPointCloud: {\n\t\t\t\tget: function () {\n\t\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\t\treturn this.Points;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t}\n\n\tfunction ascSort( a, b ) {\n\n\t\treturn a.distance - b.distance;\n\n\t}\n\n\tfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tvar children = object.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tObject.assign( Raycaster.prototype, {\n\n\t\tlinePrecision: 1,\n\n\t\tset: function ( origin, direction ) {\n\n\t\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\t\tthis.ray.set( origin, direction );\n\n\t\t},\n\n\t\tsetFromCamera: function ( coords, camera ) {\n\n\t\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\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\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t\t}\n\n\t\t},\n\n\t\tintersectObject: function ( object, recursive ) {\n\n\t\t\tvar intersects = [];\n\n\t\t\tintersectObject( object, this, intersects, recursive );\n\n\t\t\tintersects.sort( ascSort );\n\n\t\t\treturn intersects;\n\n\t\t},\n\n\t\tintersectObjects: function ( objects, recursive ) {\n\n\t\t\tvar intersects = [];\n\n\t\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\t\treturn intersects;\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t\t}\n\n\t\t\tintersects.sort( ascSort );\n\n\t\t\treturn intersects;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction Clock( autoStart ) {\n\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tObject.assign( Clock.prototype, {\n\n\t\tstart: function () {\n\n\t\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\t\tthis.oldTime = this.startTime;\n\t\t\tthis.elapsedTime = 0;\n\t\t\tthis.running = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tthis.getElapsedTime();\n\t\t\tthis.running = false;\n\t\t\tthis.autoStart = false;\n\n\t\t},\n\n\t\tgetElapsedTime: function () {\n\n\t\t\tthis.getDelta();\n\t\t\treturn this.elapsedTime;\n\n\t\t},\n\n\t\tgetDelta: function () {\n\n\t\t\tvar diff = 0;\n\n\t\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\t\tthis.start();\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\tif ( this.running ) {\n\n\t\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\t\tthis.oldTime = newTime;\n\n\t\t\t\tthis.elapsedTime += diff;\n\n\t\t\t}\n\n\t\t\treturn diff;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n\t *\n\t * The poles (phi) are at the positive and negative y axis.\n\t * The equator starts at positive z.\n\t */\n\n\tfunction Spherical( radius, phi, theta ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\t\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\t\treturn this;\n\n\t}\n\n\tObject.assign( Spherical.prototype, {\n\n\t\tset: function ( radius, phi, theta ) {\n\n\t\t\tthis.radius = radius;\n\t\t\tthis.phi = phi;\n\t\t\tthis.theta = theta;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( other ) {\n\n\t\t\tthis.radius = other.radius;\n\t\t\tthis.phi = other.phi;\n\t\t\tthis.theta = other.theta;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// restrict phi to be betwee EPS and PI-EPS\n\t\tmakeSafe: function() {\n\n\t\t\tvar EPS = 0.000001;\n\t\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromVector3: function( vec3 ) {\n\n\t\t\tthis.radius = vec3.length();\n\n\t\t\tif ( this.radius === 0 ) {\n\n\t\t\t\tthis.theta = 0;\n\t\t\t\tthis.phi = 0;\n\n\t\t\t} else {\n\n\t\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n\t *\n\t */\n\n\tfunction Cylindrical( radius, theta, y ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tObject.assign( Cylindrical.prototype, {\n\n\t\tset: function ( radius, theta, y ) {\n\n\t\t\tthis.radius = radius;\n\t\t\tthis.theta = theta;\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( other ) {\n\n\t\t\tthis.radius = other.radius;\n\t\t\tthis.theta = other.theta;\n\t\t\tthis.y = other.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromVector3: function( vec3 ) {\n\n\t\t\tthis.radius = Math.sqrt( vec3.x * vec3.x + vec3.z * vec3.z );\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z );\n\t\t\tthis.y = vec3.y;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tfunction ImmediateRenderObject( material ) {\n\n\t\tObject3D.call( this );\n\n\t\tthis.material = material;\n\t\tthis.render = function ( renderCallback ) {};\n\n\t}\n\n\tImmediateRenderObject.prototype = Object.create( Object3D.prototype );\n\tImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\n\tImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\t\tthis.object = object;\n\n\t\tthis.size = ( size !== undefined ) ? size : 1;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\t\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t\t//\n\n\t\tvar nNormals = 0;\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tnNormals = objGeometry.faces.length * 3;\n\n\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t\t}\n\n\t\t//\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\t\tgeometry.addAttribute( 'position', positions );\n\n\t\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t\t//\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\n\tVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\n\tVertexNormalsHelper.prototype.update = ( function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\t\tvar normalMatrix = new Matrix3();\n\n\t\treturn function update() {\n\n\t\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\t\tthis.object.updateMatrixWorld( true );\n\n\t\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\t\tvar position = this.geometry.attributes.position;\n\n\t\t\t//\n\n\t\t\tvar objGeometry = this.object.geometry;\n\n\t\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\t\tvar faces = objGeometry.faces;\n\n\t\t\t\tvar idx = 0;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\t\tvar idx = 0;\n\n\t\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t};\n\n\t}() );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction SpotLightHelper( light, color ) {\n\n\t\tObject3D.call( this );\n\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\tvar geometry = new BufferGeometry();\n\n\t\tvar positions = [\n\t\t\t0, 0, 0,   0,   0,   1,\n\t\t\t0, 0, 0,   1,   0,   1,\n\t\t\t0, 0, 0, - 1,   0,   1,\n\t\t\t0, 0, 0,   0,   1,   1,\n\t\t\t0, 0, 0,   0, - 1,   1\n\t\t];\n\n\t\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { fog: 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\tSpotLightHelper.prototype = Object.create( Object3D.prototype );\n\tSpotLightHelper.prototype.constructor = SpotLightHelper;\n\n\tSpotLightHelper.prototype.dispose = function () {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t};\n\n\tSpotLightHelper.prototype.update = function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar vector2 = new Vector3();\n\n\t\treturn function update() {\n\n\t\t\tthis.light.updateMatrixWorld();\n\n\t\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\t\tif ( this.color !== undefined ) {\n\n\t\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t\t} else {\n\n\t\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\t/**\n\t * @author Sean Griffin / http://twitter.com/sgrif\n\t * @author Michael Guerrero / http://realitymeltdown.com\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author ikerr / http://verold.com\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tfunction getBoneList( object ) {\n\n\t\tvar boneList = [];\n\n\t\tif ( object && object.isBone ) {\n\n\t\t\tboneList.push( object );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t\t}\n\n\t\treturn boneList;\n\n\t}\n\n\tfunction SkeletonHelper( object ) {\n\n\t\tvar bones = getBoneList( object );\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar vertices = [];\n\t\tvar colors = [];\n\n\t\tvar color1 = new Color( 0, 0, 1 );\n\t\tvar color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\t\tLineSegments.call( this, geometry, material );\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\tthis.onBeforeRender();\n\n\t}\n\n\tSkeletonHelper.prototype = Object.create( LineSegments.prototype );\n\tSkeletonHelper.prototype.constructor = SkeletonHelper;\n\n\tSkeletonHelper.prototype.onBeforeRender = function () {\n\n\t\tvar vector = new Vector3();\n\n\t\tvar boneMatrix = new Matrix4();\n\t\tvar matrixWorldInv = new Matrix4();\n\n\t\treturn function onBeforeRender() {\n\n\t\t\tvar bones = this.bones;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\t\tvar bone = bones[ i ];\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\t\tj += 2;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\t};\n\n\t}();\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction PointLightHelper( light, sphereSize, color ) {\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\t\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\t\tMesh.call( this, geometry, material );\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\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\t\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\t\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\t\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\t\tvar d = 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.scale.set( d, d, d );\n\n\t\t}\n\n\t\tthis.add( this.lightDistance );\n\t\t*/\n\n\t}\n\n\tPointLightHelper.prototype = Object.create( Mesh.prototype );\n\tPointLightHelper.prototype.constructor = PointLightHelper;\n\n\tPointLightHelper.prototype.dispose = function () {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t};\n\n\tPointLightHelper.prototype.update = function () {\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\tvar 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\t/**\n\t * @author abelnation / http://github.com/abelnation\n\t * @author Mugen87 / http://github.com/Mugen87\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction RectAreaLightHelper( light, color ) {\n\n\t\tObject3D.call( this );\n\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\tvar material = new LineBasicMaterial( { fog: false } );\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tgeometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) );\n\n\t\tthis.line = new Line( geometry, material );\n\t\tthis.add( this.line );\n\n\n\t\tthis.update();\n\n\t}\n\n\tRectAreaLightHelper.prototype = Object.create( Object3D.prototype );\n\tRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\n\tRectAreaLightHelper.prototype.dispose = function () {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t};\n\n\tRectAreaLightHelper.prototype.update = function () {\n\n\t\t// calculate new dimensions of the helper\n\n\t\tvar hx = this.light.width * 0.5;\n\t\tvar hy = this.light.height * 0.5;\n\n\t\tvar position = this.line.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\t// update vertices\n\n\t\tarray[  0 ] =   hx; array[  1 ] = - hy; array[  2 ] = 0;\n\t\tarray[  3 ] =   hx; array[  4 ] =   hy; array[  5 ] = 0;\n\t\tarray[  6 ] = - hx; array[  7 ] =   hy; array[  8 ] = 0;\n\t\tarray[  9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0;\n\t\tarray[ 12 ] =   hx; array[ 13 ] = - hy; array[ 14 ] = 0;\n\n\t\tposition.needsUpdate = true;\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.line.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.line.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tfunction HemisphereLightHelper( light, size, color ) {\n\n\t\tObject3D.call( this );\n\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\tvar geometry = new OctahedronBufferGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\t\tvar position = geometry.getAttribute( 'position' );\n\t\tvar colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.addAttribute( '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\tHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\n\tHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\n\tHemisphereLightHelper.prototype.dispose = function () {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t};\n\n\tHemisphereLightHelper.prototype.update = function () {\n\n\t\tvar vector = new Vector3();\n\n\t\tvar color1 = new Color();\n\t\tvar color2 = new Color();\n\n\t\treturn function update() {\n\n\t\t\tvar mesh = this.children[ 0 ];\n\n\t\t\tif ( this.color !== undefined ) {\n\n\t\t\t\tthis.material.color.set( this.color );\n\n\t\t\t} else {\n\n\t\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t\tcolor1.copy( this.light.color );\n\t\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t\t}\n\n\t\t\t\tcolors.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t\t};\n\n\t}();\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction GridHelper( size, divisions, color1, color2 ) {\n\n\t\tsize = size || 10;\n\t\tdivisions = divisions || 10;\n\t\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\t\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\t\tvar center = divisions / 2;\n\t\tvar step = size / divisions;\n\t\tvar halfSize = size / 2;\n\n\t\tvar vertices = [], colors = [];\n\n\t\tfor ( var 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\tvar 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\tvar geometry = new BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\t\tLineSegments.call( this, geometry, material );\n\n\t}\n\n\tGridHelper.prototype = Object.create( LineSegments.prototype );\n\tGridHelper.prototype.constructor = GridHelper;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / http://github.com/Mugen87\n\t * @author Hectate / http://www.github.com/Hectate\n\t */\n\n\tfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\t\tradius = radius || 10;\n\t\tradials = radials || 16;\n\t\tcircles = circles || 8;\n\t\tdivisions = divisions || 64;\n\t\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\t\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\t\tvar vertices = [];\n\t\tvar colors = [];\n\n\t\tvar x, z;\n\t\tvar v, i, j, r, color;\n\n\t\t// create the radials\n\n\t\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * radius;\n\t\t\tz = 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\tcolor = ( 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 ( i = 0; i <= circles; i ++ ) {\n\n\t\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\t\tr = radius - ( radius / circles * i );\n\n\t\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tv = ( j / 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\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\tvar geometry = new BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\t\tLineSegments.call( this, geometry, material );\n\n\t}\n\n\tPolarGridHelper.prototype = Object.create( LineSegments.prototype );\n\tPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t\t// FaceNormalsHelper only supports THREE.Geometry\n\n\t\tthis.object = object;\n\n\t\tthis.size = ( size !== undefined ) ? size : 1;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\t\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t\t//\n\n\t\tvar nNormals = 0;\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tnNormals = objGeometry.faces.length;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t\t}\n\n\t\t//\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\t\tgeometry.addAttribute( 'position', positions );\n\n\t\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t\t//\n\n\t\tthis.matrixAutoUpdate = false;\n\t\tthis.update();\n\n\t}\n\n\tFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\n\tFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\n\tFaceNormalsHelper.prototype.update = ( function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\t\tvar normalMatrix = new Matrix3();\n\n\t\treturn function update() {\n\n\t\t\tthis.object.updateMatrixWorld( true );\n\n\t\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\t\tvar position = this.geometry.attributes.position;\n\n\t\t\t//\n\n\t\t\tvar objGeometry = this.object.geometry;\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t\t.divideScalar( 3 )\n\t\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t};\n\n\t}() );\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction DirectionalLightHelper( light, size, color ) {\n\n\t\tObject3D.call( this );\n\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\tvar geometry = new BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size,   size, 0,\n\t\t\t  size,   size, 0,\n\t\t\t  size, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size,   size, 0\n\t\t], 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { fog: 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.addAttribute( '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\tDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\n\tDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\n\tDirectionalLightHelper.prototype.dispose = function () {\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\tDirectionalLightHelper.prototype.update = function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\t\tvar v3 = new Vector3();\n\n\t\treturn function update() {\n\n\t\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t\tv3.subVectors( v2, v1 );\n\n\t\t\tthis.lightPlane.lookAt( v3 );\n\n\t\t\tif ( this.color !== undefined ) {\n\n\t\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t\t} else {\n\n\t\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t\t}\n\n\t\t\tthis.targetLine.lookAt( v3 );\n\t\t\tthis.targetLine.scale.z = v3.length();\n\n\t\t};\n\n\t}();\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t *\t- shows frustum, line of sight and up of the camera\n\t *\t- suitable for fast updates\n\t * \t- based on frustum visualization in lightgl.js shadowmap example\n\t *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n\t */\n\n\tfunction CameraHelper( camera ) {\n\n\t\tvar geometry = new BufferGeometry();\n\t\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\t\tvar vertices = [];\n\t\tvar colors = [];\n\n\t\tvar pointMap = {};\n\n\t\t// colors\n\n\t\tvar colorFrustum = new Color( 0xffaa00 );\n\t\tvar colorCone = new Color( 0xff0000 );\n\t\tvar colorUp = new Color( 0x00aaff );\n\t\tvar colorTarget = new Color( 0xffffff );\n\t\tvar 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.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tLineSegments.call( this, geometry, material );\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\tCameraHelper.prototype = Object.create( LineSegments.prototype );\n\tCameraHelper.prototype.constructor = CameraHelper;\n\n\tCameraHelper.prototype.update = function () {\n\n\t\tvar geometry, pointMap;\n\n\t\tvar vector = new Vector3();\n\t\tvar camera = new Camera();\n\n\t\tfunction setPoint( point, x, y, z ) {\n\n\t\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\t\tvar points = pointMap[ point ];\n\n\t\t\tif ( points !== undefined ) {\n\n\t\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function update() {\n\n\t\t\tgeometry = this.geometry;\n\t\t\tpointMap = this.pointMap;\n\n\t\t\tvar w = 1, h = 1;\n\n\t\t\t// we need just camera projection matrix\n\t\t\t// world matrix must be identity\n\n\t\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t\t// center / target\n\n\t\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\t\tsetPoint( \"t\", 0, 0,  1 );\n\n\t\t\t// near\n\n\t\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\t\tsetPoint( \"n2\",   w, - h, - 1 );\n\t\t\tsetPoint( \"n3\", - w,   h, - 1 );\n\t\t\tsetPoint( \"n4\",   w,   h, - 1 );\n\n\t\t\t// far\n\n\t\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\t\tsetPoint( \"f2\",   w, - h, 1 );\n\t\t\tsetPoint( \"f3\", - w,   h, 1 );\n\t\t\tsetPoint( \"f4\",   w,   h, 1 );\n\n\t\t\t// up\n\n\t\t\tsetPoint( \"u1\",   w * 0.7, h * 1.1, - 1 );\n\t\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\t\tsetPoint( \"u3\",         0, h * 2,   - 1 );\n\n\t\t\t// cross\n\n\t\t\tsetPoint( \"cf1\", - w,   0, 1 );\n\t\t\tsetPoint( \"cf2\",   w,   0, 1 );\n\t\t\tsetPoint( \"cf3\",   0, - h, 1 );\n\t\t\tsetPoint( \"cf4\",   0,   h, 1 );\n\n\t\t\tsetPoint( \"cn1\", - w,   0, - 1 );\n\t\t\tsetPoint( \"cn2\",   w,   0, - 1 );\n\t\t\tsetPoint( \"cn3\",   0, - h, - 1 );\n\t\t\tsetPoint( \"cn4\",   0,   h, - 1 );\n\n\t\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\t};\n\n\t}();\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Mugen87 / http://github.com/Mugen87\n\t */\n\n\tfunction BoxHelper( object, color ) {\n\n\t\tthis.object = object;\n\n\t\tif ( color === undefined ) color = 0xffff00;\n\n\t\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tvar positions = new Float32Array( 8 * 3 );\n\n\t\tvar geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tBoxHelper.prototype = Object.create( LineSegments.prototype );\n\tBoxHelper.prototype.constructor = BoxHelper;\n\n\tBoxHelper.prototype.update = ( function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function update( object ) {\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t\t}\n\n\t\t\tif ( this.object !== undefined ) {\n\n\t\t\t\tbox.setFromObject( this.object );\n\n\t\t\t}\n\n\t\t\tif ( box.isEmpty() ) return;\n\n\t\t\tvar min = box.min;\n\t\t\tvar max = box.max;\n\n\t\t\t/*\n\t\t\t  5____4\n\t\t\t1/___0/|\n\t\t\t| 6__|_7\n\t\t\t2/___3/\n\n\t\t\t0: max.x, max.y, max.z\n\t\t\t1: min.x, max.y, max.z\n\t\t\t2: min.x, min.y, max.z\n\t\t\t3: max.x, min.y, max.z\n\t\t\t4: max.x, max.y, min.z\n\t\t\t5: min.x, max.y, min.z\n\t\t\t6: min.x, min.y, min.z\n\t\t\t7: max.x, min.y, min.z\n\t\t\t*/\n\n\t\t\tvar position = this.geometry.attributes.position;\n\t\t\tvar array = position.array;\n\n\t\t\tarray[  0 ] = max.x; array[  1 ] = max.y; array[  2 ] = max.z;\n\t\t\tarray[  3 ] = min.x; array[  4 ] = max.y; array[  5 ] = max.z;\n\t\t\tarray[  6 ] = min.x; array[  7 ] = min.y; array[  8 ] = max.z;\n\t\t\tarray[  9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t\tthis.geometry.computeBoundingSphere();\n\n\t\t};\n\n\t} )();\n\n\tBoxHelper.prototype.setFromObject = function ( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction Box3Helper( box, hex ) {\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.box = box;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\t\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t\tthis.onBeforeRender();\n\n\t}\n\n\tBox3Helper.prototype = Object.create( LineSegments.prototype );\n\tBox3Helper.prototype.constructor = Box3Helper;\n\n\tBox3Helper.prototype.onBeforeRender = function () {\n\n\t\tvar 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};\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tfunction PlaneHelper( plane, size, hex ) {\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = ( size === undefined ) ? 1 : size;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\t\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tvar geometry = new BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t\t//\n\n\t\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tvar geometry2 = new BufferGeometry();\n\t\tgeometry2.addAttribute( '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 } ) ) );\n\n\t\t//\n\n\t\tthis.onBeforeRender();\n\n\t}\n\n\tPlaneHelper.prototype = Object.create( Line.prototype );\n\tPlaneHelper.prototype.constructor = PlaneHelper;\n\n\tPlaneHelper.prototype.onBeforeRender = function () {\n\n\t\tvar 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.lookAt( this.plane.normal );\n\n\t\tthis.updateMatrixWorld();\n\n\t};\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author zz85 / http://github.com/zz85\n\t * @author bhouston / http://clara.io\n\t *\n\t * Creates an arrow for visualizing directions\n\t *\n\t * Parameters:\n\t *  dir - Vector3\n\t *  origin - Vector3\n\t *  length - Number\n\t *  color - color in hex value\n\t *  headLength - Number\n\t *  headWidth - Number\n\t */\n\n\tvar lineGeometry;\n\tvar coneGeometry;\n\n\tfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tObject3D.call( this );\n\n\t\tif ( color === undefined ) color = 0xffff00;\n\t\tif ( length === undefined ) length = 1;\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tif ( lineGeometry === undefined ) {\n\n\t\t\tlineGeometry = new BufferGeometry();\n\t\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\tconeGeometry.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 } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\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\tArrowHelper.prototype = Object.create( Object3D.prototype );\n\tArrowHelper.prototype.constructor = ArrowHelper;\n\n\tArrowHelper.prototype.setDirection = ( function () {\n\n\t\tvar axis = new Vector3();\n\t\tvar radians;\n\n\t\treturn function setDirection( dir ) {\n\n\t\t\t// dir is assumed to be normalized\n\n\t\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\t\tradians = Math.acos( dir.y );\n\n\t\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\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\tArrowHelper.prototype.setColor = function ( color ) {\n\n\t\tthis.line.material.color.copy( color );\n\t\tthis.cone.material.color.copy( color );\n\n\t};\n\n\t/**\n\t * @author sroucheray / http://sroucheray.org/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction AxisHelper( size ) {\n\n\t\tsize = size || 1;\n\n\t\tvar vertices = [\n\t\t\t0, 0, 0,  size, 0, 0,\n\t\t\t0, 0, 0,  0, size, 0,\n\t\t\t0, 0, 0,  0, 0, size\n\t\t];\n\n\t\tvar colors = [\n\t\t\t1, 0, 0,  1, 0.6, 0,\n\t\t\t0, 1, 0,  0.6, 1, 0,\n\t\t\t0, 0, 1,  0, 0.6, 1\n\t\t];\n\n\t\tvar geometry = new BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\t\tLineSegments.call( this, geometry, material );\n\n\t}\n\n\tAxisHelper.prototype = Object.create( LineSegments.prototype );\n\tAxisHelper.prototype.constructor = AxisHelper;\n\n\t/**\n\t * @author zz85 https://github.com/zz85\n\t *\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t * cusps and self-intersections in non-uniform catmull rom curves.\n\t * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t *\n\t * curve.type accepts centripetal(default), chordal and catmullrom\n\t * curve.tension is used for catmullrom which defaults to 0.5\n\t */\n\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {\n\n\t\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t\t/*\n\t\t * Compute coefficients for a cubic polynomial\n\t\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t\t * such that\n\t\t *   p(0) = x0, p(1) = x1\n\t\t *  and\n\t\t *   p'(0) = t0, p'(1) = t1.\n\t\t */\n\t\tfunction init( x0, x1, t0, t1 ) {\n\n\t\t\tc0 = x0;\n\t\t\tc1 = t0;\n\t\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t\t},\n\n\t\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\t\tt1 *= dt1;\n\t\t\t\tt2 *= dt1;\n\n\t\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t\t},\n\n\t\t\tcalc: function ( t ) {\n\n\t\t\t\tvar t2 = t * t;\n\t\t\t\tvar t3 = t2 * t;\n\t\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar tmp = new Vector3();\n\tvar px = new CubicPoly();\n\tvar py = new CubicPoly();\n\tvar pz = new CubicPoly();\n\n\tfunction CatmullRomCurve3( points ) {\n\n\t\tCurve.call( this );\n\n\t\tif ( points.length < 2 ) console.warn( 'THREE.CatmullRomCurve3: Points array needs at least two entries.' );\n\n\t\tthis.points = points || [];\n\t\tthis.closed = false;\n\n\t}\n\n\tCatmullRomCurve3.prototype = Object.create( Curve.prototype );\n\tCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\n\tCatmullRomCurve3.prototype.getPoint = function ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar l = points.length;\n\n\t\tvar point = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\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\tvar p0, p1, p2, p3; // 4 points\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\tp1 = points[ intPoint % l ];\n\t\tp2 = 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.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tvar 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.type === 'catmullrom' ) {\n\n\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t}\n\n\t\treturn new Vector3( px.calc( weight ), py.calc( weight ), pz.calc( weight ) );\n\n\t};\n\n\tfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\t\tCurve.call( this );\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\tCubicBezierCurve3.prototype = Object.create( Curve.prototype );\n\tCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\n\tCubicBezierCurve3.prototype.getPoint = function ( t ) {\n\n\t\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\treturn new Vector3(\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};\n\n\tfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\t\tCurve.call( this );\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\n\tQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\n\tQuadraticBezierCurve3.prototype.getPoint = function ( t ) {\n\n\t\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\treturn new Vector3(\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};\n\n\tfunction LineCurve3( v1, v2 ) {\n\n\t\tCurve.call( this );\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tLineCurve3.prototype = Object.create( Curve.prototype );\n\tLineCurve3.prototype.constructor = LineCurve3;\n\n\tLineCurve3.prototype.getPoint = function ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar vector = new Vector3();\n\n\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\tvector.multiplyScalar( t );\n\t\tvector.add( this.v1 );\n\n\t\treturn vector;\n\n\t};\n\n\tfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t}\n\n\tArcCurve.prototype = Object.create( EllipseCurve.prototype );\n\tArcCurve.prototype.constructor = ArcCurve;\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tvar SceneUtils = {\n\n\t\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t},\n\n\t\tdetach: function ( child, parent, scene ) {\n\n\t\t\tchild.applyMatrix( parent.matrixWorld );\n\t\t\tparent.remove( child );\n\t\t\tscene.add( child );\n\n\t\t},\n\n\t\tattach: function ( child, scene, parent ) {\n\n\t\t\tchild.applyMatrix( new Matrix4().getInverse( parent.matrixWorld ) );\n\n\t\t\tscene.remove( child );\n\t\t\tparent.add( child );\n\n\t\t}\n\n\t};\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\t\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\t\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n\t}\n\n\tvar LineStrip = 0;\n\n\tvar LinePieces = 1;\n\n\tfunction MeshFaceMaterial( materials ) {\n\n\t\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\t\treturn materials;\n\n\t}\n\n\tfunction MultiMaterial( materials ) {\n\n\t\tif ( materials === undefined ) materials = [];\n\n\t\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\t\tmaterials.isMultiMaterial = true;\n\t\tmaterials.materials = materials;\n\t\tmaterials.clone = function () {\n\n\t\t\treturn materials.slice();\n\n\t\t};\n\t\treturn materials;\n\n\t}\n\n\tfunction PointCloud( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\t\treturn new Points( geometry, material );\n\n\t}\n\n\tfunction Particle( material ) {\n\n\t\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\t\treturn new Sprite( material );\n\n\t}\n\n\tfunction ParticleSystem( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\t\treturn new Points( geometry, material );\n\n\t}\n\n\tfunction PointCloudMaterial( parameters ) {\n\n\t\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\t\treturn new PointsMaterial( parameters );\n\n\t}\n\n\tfunction ParticleBasicMaterial( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\t\treturn new PointsMaterial( parameters );\n\n\t}\n\n\tfunction ParticleSystemMaterial( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\t\treturn new PointsMaterial( parameters );\n\n\t}\n\n\tfunction Vertex( x, y, z ) {\n\n\t\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\t\treturn new Vector3( x, y, z );\n\n\t}\n\n\t//\n\n\tfunction DynamicBufferAttribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\t\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n\t}\n\n\tfunction Int8Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\t\treturn new Int8BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Uint8Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\t\treturn new Uint8BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\t\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Int16Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\t\treturn new Int16BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Uint16Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\t\treturn new Uint16BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Int32Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\t\treturn new Int32BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Uint32Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\t\treturn new Uint32BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Float32Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\t\treturn new Float32BufferAttribute( array, itemSize );\n\n\t}\n\n\tfunction Float64Attribute( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\t\treturn new Float64BufferAttribute( array, itemSize );\n\n\t}\n\n\t//\n\n\tCurve.create = function ( construct, getPoint ) {\n\n\t\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\t\tconstruct.prototype = Object.create( Curve.prototype );\n\t\tconstruct.prototype.constructor = construct;\n\t\tconstruct.prototype.getPoint = getPoint;\n\n\t\treturn construct;\n\n\t};\n\n\t//\n\n\tfunction ClosedSplineCurve3( points ) {\n\n\t\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\t\tCatmullRomCurve3.call( this, points );\n\t\tthis.type = 'catmullrom';\n\t\tthis.closed = true;\n\n\t}\n\n\tClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\t//\n\n\tfunction SplineCurve3( points ) {\n\n\t\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\t\tCatmullRomCurve3.call( this, points );\n\t\tthis.type = 'catmullrom';\n\n\t}\n\n\tSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\t//\n\n\tfunction Spline( points ) {\n\n\t\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\t\tCatmullRomCurve3.call( this, points );\n\t\tthis.type = 'catmullrom';\n\n\t}\n\n\tSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\tObject.assign( Spline.prototype, {\n\n\t\tinitFromArray: function ( a ) {\n\n\t\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t\t},\n\t\tgetControlPointsArray: function ( optionalTarget ) {\n\n\t\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t\t},\n\t\treparametrizeByArcLength: function ( samplingCoef ) {\n\n\t\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t\t}\n\n\t} );\n\n\t//\n\tfunction BoundingBoxHelper( object, color ) {\n\n\t\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\t\treturn new BoxHelper( object, color );\n\n\t}\n\n\tfunction EdgesHelper( object, hex ) {\n\n\t\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\t\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\n\n\tGridHelper.prototype.setColors = function () {\n\n\t\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n\t};\n\n\tSkeletonHelper.prototype.update = function () {\n\n\t\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n\t};\n\n\tfunction WireframeHelper( object, hex ) {\n\n\t\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\t\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\n\n\t//\n\n\tfunction XHRLoader( manager ) {\n\n\t\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\t\treturn new FileLoader( manager );\n\n\t}\n\n\tfunction BinaryTextureLoader( manager ) {\n\n\t\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\t\treturn new DataTextureLoader( manager );\n\n\t}\n\n\t//\n\n\tObject.assign( Box2.prototype, {\n\n\t\tcenter: function ( optionalTarget ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\t\treturn this.getCenter( optionalTarget );\n\n\t\t},\n\t\tempty: function () {\n\n\t\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\t\treturn this.isEmpty();\n\n\t\t},\n\t\tisIntersectionBox: function ( box ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\n\t\t},\n\t\tsize: function ( optionalTarget ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\t\treturn this.getSize( optionalTarget );\n\n\t\t}\n\t} );\n\n\tObject.assign( Box3.prototype, {\n\n\t\tcenter: function ( optionalTarget ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\t\treturn this.getCenter( optionalTarget );\n\n\t\t},\n\t\tempty: function () {\n\n\t\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\t\treturn this.isEmpty();\n\n\t\t},\n\t\tisIntersectionBox: function ( box ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\n\t\t},\n\t\tisIntersectionSphere: function ( sphere ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t},\n\t\tsize: function ( optionalTarget ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\t\treturn this.getSize( optionalTarget );\n\n\t\t}\n\t} );\n\n\tLine3.prototype.center = function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t};\n\n\t_Math.random16 = function () {\n\n\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t};\n\n\tObject.assign( Matrix3.prototype, {\n\n\t\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\t\treturn this.toArray( array, offset );\n\n\t\t},\n\t\tmultiplyVector3: function ( vector ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix3( this );\n\n\t\t},\n\t\tmultiplyVector3Array: function ( a ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.'  );\n\n\t\t},\n\t\tapplyToBuffer: function( buffer, offset, length ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\t\treturn this.applyToBufferAttribute( buffer );\n\n\t\t},\n\t\tapplyToVector3Array: function( array, offset, length ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Matrix4.prototype, {\n\n\t\textractPosition: function ( m ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\t\treturn this.copyPosition( m );\n\n\t\t},\n\t\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\t\treturn this.toArray( array, offset );\n\n\t\t},\n\t\tgetPosition: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function getPosition() {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t\t};\n\n\t\t}(),\n\t\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\t\treturn this.makeRotationFromQuaternion( q );\n\n\t\t},\n\t\tmultiplyToArray: function () {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t\t},\n\t\tmultiplyVector3: function ( vector ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix4( this );\n\n\t\t},\n\t\tmultiplyVector4: function ( vector ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix4( this );\n\n\t\t},\n\t\tmultiplyVector3Array: function ( a ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.'  );\n\n\t\t},\n\t\trotateAxis: function ( v ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\t\tv.transformDirection( this );\n\n\t\t},\n\t\tcrossVector: function ( vector ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix4( this );\n\n\t\t},\n\t\ttranslate: function () {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t\t},\n\t\trotateX: function () {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t\t},\n\t\trotateY: function () {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t\t},\n\t\trotateZ: function () {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t\t},\n\t\trotateByAxis: function () {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t\t},\n\t\tapplyToBuffer: function( buffer, offset, length ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\t\treturn this.applyToBufferAttribute( buffer );\n\n\t\t},\n\t\tapplyToVector3Array: function( array, offset, length ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t\t},\n\t\tmakeFrustum: function( left, right, bottom, top, near, far ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t\t}\n\n\t} );\n\n\tPlane.prototype.isIntersectionLine = function ( line ) {\n\n\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\treturn this.intersectsLine( line );\n\n\t};\n\n\tQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\n\t};\n\n\tObject.assign( Ray.prototype, {\n\n\t\tisIntersectionBox: function ( box ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\n\t\t},\n\t\tisIntersectionPlane: function ( plane ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\t\treturn this.intersectsPlane( plane );\n\n\t\t},\n\t\tisIntersectionSphere: function ( sphere ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Shape.prototype, {\n\n\t\textrude: function ( options ) {\n\n\t\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\t\treturn new ExtrudeGeometry( this, options );\n\n\t\t},\n\t\tmakeGeometry: function ( options ) {\n\n\t\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\t\treturn new ShapeGeometry( this, options );\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Vector2.prototype, {\n\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tconsole.error( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Vector3.prototype, {\n\n\t\tsetEulerFromRotationMatrix: function () {\n\n\t\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t\t},\n\t\tsetEulerFromQuaternion: function () {\n\n\t\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t\t},\n\t\tgetPositionFromMatrix: function ( m ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\t\treturn this.setFromMatrixPosition( m );\n\n\t\t},\n\t\tgetScaleFromMatrix: function ( m ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\t\treturn this.setFromMatrixScale( m );\n\n\t\t},\n\t\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t\t},\n\t\tapplyProjection: function ( m ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\t\treturn this.applyMatrix4( m );\n\n\t\t},\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t\t}\n\n\t} );\n\n\tObject.assign( Vector4.prototype, {\n\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tconsole.error( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t\t}\n\n\t} );\n\n\t//\n\n\tGeometry.prototype.computeTangents = function () {\n\n\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t};\n\n\tObject.assign( Object3D.prototype, {\n\n\t\tgetChildByName: function ( name ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\t\treturn this.getObjectByName( name );\n\n\t\t},\n\t\trenderDepth: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t\t},\n\t\ttranslate: function ( distance, axis ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\t\treturn this.translateOnAxis( axis, distance );\n\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( Object3D.prototype, {\n\n\t\teulerOrder: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\t\treturn this.rotation.order;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\t\tthis.rotation.order = value;\n\n\t\t\t}\n\t\t},\n\t\tuseQuaternion: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( LOD.prototype, {\n\n\t\tobjects: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\t\treturn this.levels;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\tObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t\t}\n\n\t} );\n\n\tObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\t\treturn this.arcLengthDivisions;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\t\tthis.arcLengthDivisions = value;\n\n\t\t}\n\n\t} );\n\n\t//\n\n\tPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\t\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\t\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\t\tthis.setFocalLength( focalLength );\n\n\t};\n\n\t//\n\n\tObject.defineProperties( Light.prototype, {\n\t\tonlyShadow: {\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraFov: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\t\tthis.shadow.camera.fov = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraLeft: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\t\tthis.shadow.camera.left = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraRight: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\t\tthis.shadow.camera.right = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraTop: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\t\tthis.shadow.camera.top = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraBottom: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraNear: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\t\tthis.shadow.camera.near = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraFar: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\t\tthis.shadow.camera.far = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowCameraVisible: {\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t\t}\n\t\t},\n\t\tshadowBias: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\t\tthis.shadow.bias = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowDarkness: {\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t\t}\n\t\t},\n\t\tshadowMapWidth: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowMapHeight: {\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tObject.defineProperties( BufferAttribute.prototype, {\n\n\t\tlength: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\t\treturn this.array.length;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\tObject.assign( BufferGeometry.prototype, {\n\n\t\taddIndex: function ( index ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\t\tthis.setIndex( index );\n\n\t\t},\n\t\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\t\tif ( indexOffset !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t\t}\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\t\tthis.addGroup( start, count );\n\n\t\t},\n\t\tclearDrawCalls: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\t\tthis.clearGroups();\n\n\t\t},\n\t\tcomputeTangents: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t\t},\n\t\tcomputeOffsets: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( BufferGeometry.prototype, {\n\n\t\tdrawcalls: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\t\treturn this.groups;\n\n\t\t\t}\n\t\t},\n\t\toffsets: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\t\treturn this.groups;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t//\n\n\tObject.defineProperties( Uniform.prototype, {\n\n\t\tdynamic: {\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t\t}\n\t\t},\n\t\tonUpdate: {\n\t\t\tvalue: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\t\treturn this;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t//\n\n\tObject.defineProperties( Material.prototype, {\n\n\t\twrapAround: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t\t}\n\t\t},\n\t\twrapRGB: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\t\treturn new Color();\n\n\t\t\t}\n\t\t},\n\n\t\tshading: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t\t},\n\t\t\tset: function ( value ) {\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 = ( value === FlatShading );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\t\tmetal: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\t\treturn false;\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( ShaderMaterial.prototype, {\n\n\t\tderivatives: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\t\treturn this.extensions.derivatives;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\t\tthis.extensions.derivatives = value;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t//\n\n\tObject.assign( WebGLRenderer.prototype, {\n\n\t\tgetCurrentRenderTarget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\t\treturn this.getRenderTarget();\n\n\t\t},\n\n\t\tgetMaxAnisotropy: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t\t},\n\n\t\tgetPrecision: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\t\treturn this.capabilities.precision;\n\n\t\t},\n\n\t\tsupportsFloatTextures: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t\t},\n\t\tsupportsHalfFloatTextures: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t\t},\n\t\tsupportsStandardDerivatives: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t\t},\n\t\tsupportsCompressedTextureS3TC: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t},\n\t\tsupportsCompressedTexturePVRTC: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t},\n\t\tsupportsBlendMinMax: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t\t},\n\t\tsupportsVertexTextures: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\t\treturn this.capabilities.vertexTextures;\n\n\t\t},\n\t\tsupportsInstancedArrays: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t},\n\t\tenableScissorTest: function ( boolean ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\t\tthis.setScissorTest( boolean );\n\n\t\t},\n\t\tinitMaterial: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t\t},\n\t\taddPrePlugin: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t\t},\n\t\taddPostPlugin: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t\t},\n\t\tupdateShadowMap: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t\t}\n\n\t} );\n\n\tObject.defineProperties( WebGLRenderer.prototype, {\n\n\t\tshadowMapEnabled: {\n\t\t\tget: function () {\n\n\t\t\t\treturn this.shadowMap.enabled;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\t\tthis.shadowMap.enabled = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowMapType: {\n\t\t\tget: function () {\n\n\t\t\t\treturn this.shadowMap.type;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\t\tthis.shadowMap.type = value;\n\n\t\t\t}\n\t\t},\n\t\tshadowMapCullFace: {\n\t\t\tget: function () {\n\n\t\t\t\treturn this.shadowMap.cullFace;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\t\tthis.shadowMap.cullFace = value;\n\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.defineProperties( WebGLShadowMap.prototype, {\n\n\t\tcullFace: {\n\t\t\tget: function () {\n\n\t\t\t\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\n\n\t\t\t},\n\t\t\tset: function ( cullFace ) {\n\n\t\t\t\tvar value = ( cullFace !== CullFaceBack );\n\t\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\t\tthis.renderReverseSided = value;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t//\n\n\tObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\t\twrapS: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\t\treturn this.texture.wrapS;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\t\tthis.texture.wrapS = value;\n\n\t\t\t}\n\t\t},\n\t\twrapT: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\t\treturn this.texture.wrapT;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\t\tthis.texture.wrapT = value;\n\n\t\t\t}\n\t\t},\n\t\tmagFilter: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\t\treturn this.texture.magFilter;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\t\tthis.texture.magFilter = value;\n\n\t\t\t}\n\t\t},\n\t\tminFilter: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\t\treturn this.texture.minFilter;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\t\tthis.texture.minFilter = value;\n\n\t\t\t}\n\t\t},\n\t\tanisotropy: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\t\treturn this.texture.anisotropy;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\t\tthis.texture.anisotropy = value;\n\n\t\t\t}\n\t\t},\n\t\toffset: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\t\treturn this.texture.offset;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\t\tthis.texture.offset = value;\n\n\t\t\t}\n\t\t},\n\t\trepeat: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\t\treturn this.texture.repeat;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\t\tthis.texture.repeat = value;\n\n\t\t\t}\n\t\t},\n\t\tformat: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\t\treturn this.texture.format;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\t\tthis.texture.format = value;\n\n\t\t\t}\n\t\t},\n\t\ttype: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\t\treturn this.texture.type;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\t\tthis.texture.type = value;\n\n\t\t\t}\n\t\t},\n\t\tgenerateMipmaps: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\t\treturn this.texture.generateMipmaps;\n\n\t\t\t},\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t//\n\n\tAudio.prototype.load = function ( file ) {\n\n\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\tvar scope = this;\n\t\tvar audioLoader = new AudioLoader();\n\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\tscope.setBuffer( buffer );\n\n\t\t} );\n\t\treturn this;\n\n\t};\n\n\tAudioAnalyser.prototype.getData = function () {\n\n\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\treturn this.getFrequencyData();\n\n\t};\n\n\t//\n\n\tCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\t\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\t\treturn this.update( renderer, scene );\n\n\t};\n\n\t//\n\n\tvar GeometryUtils = {\n\n\t\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\t\tvar matrix;\n\n\t\t\tif ( geometry2.isMesh ) {\n\n\t\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\t\tmatrix = geometry2.matrix;\n\t\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t\t}\n\n\t\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t\t},\n\n\t\tcenter: function ( geometry ) {\n\n\t\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\t\treturn geometry.center();\n\n\t\t}\n\n\t};\n\n\tvar ImageUtils = {\n\n\t\tcrossOrigin: undefined,\n\n\t\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\t\tvar loader = new TextureLoader();\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\t\tvar loader = new CubeTextureLoader();\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tloadCompressedTexture: function () {\n\n\t\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t\t},\n\n\t\tloadCompressedTextureCube: function () {\n\n\t\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t\t}\n\n\t};\n\n\t//\n\n\tfunction Projector() {\n\n\t\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\t\tthis.projectVector = function ( vector, camera ) {\n\n\t\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\t\tvector.project( camera );\n\n\t\t};\n\n\t\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\t\tvector.unproject( camera );\n\n\t\t};\n\n\t\tthis.pickingRay = function () {\n\n\t\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t\t};\n\n\t}\n\n\t//\n\n\tfunction CanvasRenderer() {\n\n\t\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\t\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tthis.clear = function () {};\n\t\tthis.render = function () {};\n\t\tthis.setClearColor = function () {};\n\t\tthis.setSize = function () {};\n\n\t}\n\n\texports.WebGLRenderTargetCube = WebGLRenderTargetCube;\n\texports.WebGLRenderTarget = WebGLRenderTarget;\n\texports.WebGLRenderer = WebGLRenderer;\n\texports.ShaderLib = ShaderLib;\n\texports.UniformsLib = UniformsLib;\n\texports.UniformsUtils = UniformsUtils;\n\texports.ShaderChunk = ShaderChunk;\n\texports.FogExp2 = FogExp2;\n\texports.Fog = Fog;\n\texports.Scene = Scene;\n\texports.LensFlare = LensFlare;\n\texports.Sprite = Sprite;\n\texports.LOD = LOD;\n\texports.SkinnedMesh = SkinnedMesh;\n\texports.Skeleton = Skeleton;\n\texports.Bone = Bone;\n\texports.Mesh = Mesh;\n\texports.LineSegments = LineSegments;\n\texports.LineLoop = LineLoop;\n\texports.Line = Line;\n\texports.Points = Points;\n\texports.Group = Group;\n\texports.VideoTexture = VideoTexture;\n\texports.DataTexture = DataTexture;\n\texports.CompressedTexture = CompressedTexture;\n\texports.CubeTexture = CubeTexture;\n\texports.CanvasTexture = CanvasTexture;\n\texports.DepthTexture = DepthTexture;\n\texports.Texture = Texture;\n\texports.CompressedTextureLoader = CompressedTextureLoader;\n\texports.DataTextureLoader = DataTextureLoader;\n\texports.CubeTextureLoader = CubeTextureLoader;\n\texports.TextureLoader = TextureLoader;\n\texports.ObjectLoader = ObjectLoader;\n\texports.MaterialLoader = MaterialLoader;\n\texports.BufferGeometryLoader = BufferGeometryLoader;\n\texports.DefaultLoadingManager = DefaultLoadingManager;\n\texports.LoadingManager = LoadingManager;\n\texports.JSONLoader = JSONLoader;\n\texports.ImageLoader = ImageLoader;\n\texports.FontLoader = FontLoader;\n\texports.FileLoader = FileLoader;\n\texports.Loader = Loader;\n\texports.Cache = Cache;\n\texports.AudioLoader = AudioLoader;\n\texports.SpotLightShadow = SpotLightShadow;\n\texports.SpotLight = SpotLight;\n\texports.PointLight = PointLight;\n\texports.RectAreaLight = RectAreaLight;\n\texports.HemisphereLight = HemisphereLight;\n\texports.DirectionalLightShadow = DirectionalLightShadow;\n\texports.DirectionalLight = DirectionalLight;\n\texports.AmbientLight = AmbientLight;\n\texports.LightShadow = LightShadow;\n\texports.Light = Light;\n\texports.StereoCamera = StereoCamera;\n\texports.PerspectiveCamera = PerspectiveCamera;\n\texports.OrthographicCamera = OrthographicCamera;\n\texports.CubeCamera = CubeCamera;\n\texports.ArrayCamera = ArrayCamera;\n\texports.Camera = Camera;\n\texports.AudioListener = AudioListener;\n\texports.PositionalAudio = PositionalAudio;\n\texports.AudioContext = AudioContext;\n\texports.AudioAnalyser = AudioAnalyser;\n\texports.Audio = Audio;\n\texports.VectorKeyframeTrack = VectorKeyframeTrack;\n\texports.StringKeyframeTrack = StringKeyframeTrack;\n\texports.QuaternionKeyframeTrack = QuaternionKeyframeTrack;\n\texports.NumberKeyframeTrack = NumberKeyframeTrack;\n\texports.ColorKeyframeTrack = ColorKeyframeTrack;\n\texports.BooleanKeyframeTrack = BooleanKeyframeTrack;\n\texports.PropertyMixer = PropertyMixer;\n\texports.PropertyBinding = PropertyBinding;\n\texports.KeyframeTrack = KeyframeTrack;\n\texports.AnimationUtils = AnimationUtils;\n\texports.AnimationObjectGroup = AnimationObjectGroup;\n\texports.AnimationMixer = AnimationMixer;\n\texports.AnimationClip = AnimationClip;\n\texports.Uniform = Uniform;\n\texports.InstancedBufferGeometry = InstancedBufferGeometry;\n\texports.BufferGeometry = BufferGeometry;\n\texports.GeometryIdCount = GeometryIdCount;\n\texports.Geometry = Geometry;\n\texports.InterleavedBufferAttribute = InterleavedBufferAttribute;\n\texports.InstancedInterleavedBuffer = InstancedInterleavedBuffer;\n\texports.InterleavedBuffer = InterleavedBuffer;\n\texports.InstancedBufferAttribute = InstancedBufferAttribute;\n\texports.Face3 = Face3;\n\texports.Object3D = Object3D;\n\texports.Raycaster = Raycaster;\n\texports.Layers = Layers;\n\texports.EventDispatcher = EventDispatcher;\n\texports.Clock = Clock;\n\texports.QuaternionLinearInterpolant = QuaternionLinearInterpolant;\n\texports.LinearInterpolant = LinearInterpolant;\n\texports.DiscreteInterpolant = DiscreteInterpolant;\n\texports.CubicInterpolant = CubicInterpolant;\n\texports.Interpolant = Interpolant;\n\texports.Triangle = Triangle;\n\texports.Math = _Math;\n\texports.Spherical = Spherical;\n\texports.Cylindrical = Cylindrical;\n\texports.Plane = Plane;\n\texports.Frustum = Frustum;\n\texports.Sphere = Sphere;\n\texports.Ray = Ray;\n\texports.Matrix4 = Matrix4;\n\texports.Matrix3 = Matrix3;\n\texports.Box3 = Box3;\n\texports.Box2 = Box2;\n\texports.Line3 = Line3;\n\texports.Euler = Euler;\n\texports.Vector4 = Vector4;\n\texports.Vector3 = Vector3;\n\texports.Vector2 = Vector2;\n\texports.Quaternion = Quaternion;\n\texports.Color = Color;\n\texports.ImmediateRenderObject = ImmediateRenderObject;\n\texports.VertexNormalsHelper = VertexNormalsHelper;\n\texports.SpotLightHelper = SpotLightHelper;\n\texports.SkeletonHelper = SkeletonHelper;\n\texports.PointLightHelper = PointLightHelper;\n\texports.RectAreaLightHelper = RectAreaLightHelper;\n\texports.HemisphereLightHelper = HemisphereLightHelper;\n\texports.GridHelper = GridHelper;\n\texports.PolarGridHelper = PolarGridHelper;\n\texports.FaceNormalsHelper = FaceNormalsHelper;\n\texports.DirectionalLightHelper = DirectionalLightHelper;\n\texports.CameraHelper = CameraHelper;\n\texports.BoxHelper = BoxHelper;\n\texports.Box3Helper = Box3Helper;\n\texports.PlaneHelper = PlaneHelper;\n\texports.ArrowHelper = ArrowHelper;\n\texports.AxisHelper = AxisHelper;\n\texports.CatmullRomCurve3 = CatmullRomCurve3;\n\texports.CubicBezierCurve3 = CubicBezierCurve3;\n\texports.QuadraticBezierCurve3 = QuadraticBezierCurve3;\n\texports.LineCurve3 = LineCurve3;\n\texports.ArcCurve = ArcCurve;\n\texports.EllipseCurve = EllipseCurve;\n\texports.SplineCurve = SplineCurve;\n\texports.CubicBezierCurve = CubicBezierCurve;\n\texports.QuadraticBezierCurve = QuadraticBezierCurve;\n\texports.LineCurve = LineCurve;\n\texports.Shape = Shape;\n\texports.Path = Path;\n\texports.ShapePath = ShapePath;\n\texports.Font = Font;\n\texports.CurvePath = CurvePath;\n\texports.Curve = Curve;\n\texports.ShapeUtils = ShapeUtils;\n\texports.SceneUtils = SceneUtils;\n\texports.WebGLUtils = WebGLUtils;\n\texports.WireframeGeometry = WireframeGeometry;\n\texports.ParametricGeometry = ParametricGeometry;\n\texports.ParametricBufferGeometry = ParametricBufferGeometry;\n\texports.TetrahedronGeometry = TetrahedronGeometry;\n\texports.TetrahedronBufferGeometry = TetrahedronBufferGeometry;\n\texports.OctahedronGeometry = OctahedronGeometry;\n\texports.OctahedronBufferGeometry = OctahedronBufferGeometry;\n\texports.IcosahedronGeometry = IcosahedronGeometry;\n\texports.IcosahedronBufferGeometry = IcosahedronBufferGeometry;\n\texports.DodecahedronGeometry = DodecahedronGeometry;\n\texports.DodecahedronBufferGeometry = DodecahedronBufferGeometry;\n\texports.PolyhedronGeometry = PolyhedronGeometry;\n\texports.PolyhedronBufferGeometry = PolyhedronBufferGeometry;\n\texports.TubeGeometry = TubeGeometry;\n\texports.TubeBufferGeometry = TubeBufferGeometry;\n\texports.TorusKnotGeometry = TorusKnotGeometry;\n\texports.TorusKnotBufferGeometry = TorusKnotBufferGeometry;\n\texports.TorusGeometry = TorusGeometry;\n\texports.TorusBufferGeometry = TorusBufferGeometry;\n\texports.TextGeometry = TextGeometry;\n\texports.TextBufferGeometry = TextBufferGeometry;\n\texports.SphereGeometry = SphereGeometry;\n\texports.SphereBufferGeometry = SphereBufferGeometry;\n\texports.RingGeometry = RingGeometry;\n\texports.RingBufferGeometry = RingBufferGeometry;\n\texports.PlaneGeometry = PlaneGeometry;\n\texports.PlaneBufferGeometry = PlaneBufferGeometry;\n\texports.LatheGeometry = LatheGeometry;\n\texports.LatheBufferGeometry = LatheBufferGeometry;\n\texports.ShapeGeometry = ShapeGeometry;\n\texports.ShapeBufferGeometry = ShapeBufferGeometry;\n\texports.ExtrudeGeometry = ExtrudeGeometry;\n\texports.ExtrudeBufferGeometry = ExtrudeBufferGeometry;\n\texports.EdgesGeometry = EdgesGeometry;\n\texports.ConeGeometry = ConeGeometry;\n\texports.ConeBufferGeometry = ConeBufferGeometry;\n\texports.CylinderGeometry = CylinderGeometry;\n\texports.CylinderBufferGeometry = CylinderBufferGeometry;\n\texports.CircleGeometry = CircleGeometry;\n\texports.CircleBufferGeometry = CircleBufferGeometry;\n\texports.BoxGeometry = BoxGeometry;\n\texports.BoxBufferGeometry = BoxBufferGeometry;\n\texports.ShadowMaterial = ShadowMaterial;\n\texports.SpriteMaterial = SpriteMaterial;\n\texports.RawShaderMaterial = RawShaderMaterial;\n\texports.ShaderMaterial = ShaderMaterial;\n\texports.PointsMaterial = PointsMaterial;\n\texports.MeshPhysicalMaterial = MeshPhysicalMaterial;\n\texports.MeshStandardMaterial = MeshStandardMaterial;\n\texports.MeshPhongMaterial = MeshPhongMaterial;\n\texports.MeshToonMaterial = MeshToonMaterial;\n\texports.MeshNormalMaterial = MeshNormalMaterial;\n\texports.MeshLambertMaterial = MeshLambertMaterial;\n\texports.MeshDepthMaterial = MeshDepthMaterial;\n\texports.MeshDistanceMaterial = MeshDistanceMaterial;\n\texports.MeshBasicMaterial = MeshBasicMaterial;\n\texports.LineDashedMaterial = LineDashedMaterial;\n\texports.LineBasicMaterial = LineBasicMaterial;\n\texports.Material = Material;\n\texports.Float64BufferAttribute = Float64BufferAttribute;\n\texports.Float32BufferAttribute = Float32BufferAttribute;\n\texports.Uint32BufferAttribute = Uint32BufferAttribute;\n\texports.Int32BufferAttribute = Int32BufferAttribute;\n\texports.Uint16BufferAttribute = Uint16BufferAttribute;\n\texports.Int16BufferAttribute = Int16BufferAttribute;\n\texports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute;\n\texports.Uint8BufferAttribute = Uint8BufferAttribute;\n\texports.Int8BufferAttribute = Int8BufferAttribute;\n\texports.BufferAttribute = BufferAttribute;\n\texports.REVISION = REVISION;\n\texports.MOUSE = MOUSE;\n\texports.CullFaceNone = CullFaceNone;\n\texports.CullFaceBack = CullFaceBack;\n\texports.CullFaceFront = CullFaceFront;\n\texports.CullFaceFrontBack = CullFaceFrontBack;\n\texports.FrontFaceDirectionCW = FrontFaceDirectionCW;\n\texports.FrontFaceDirectionCCW = FrontFaceDirectionCCW;\n\texports.BasicShadowMap = BasicShadowMap;\n\texports.PCFShadowMap = PCFShadowMap;\n\texports.PCFSoftShadowMap = PCFSoftShadowMap;\n\texports.FrontSide = FrontSide;\n\texports.BackSide = BackSide;\n\texports.DoubleSide = DoubleSide;\n\texports.FlatShading = FlatShading;\n\texports.SmoothShading = SmoothShading;\n\texports.NoColors = NoColors;\n\texports.FaceColors = FaceColors;\n\texports.VertexColors = VertexColors;\n\texports.NoBlending = NoBlending;\n\texports.NormalBlending = NormalBlending;\n\texports.AdditiveBlending = AdditiveBlending;\n\texports.SubtractiveBlending = SubtractiveBlending;\n\texports.MultiplyBlending = MultiplyBlending;\n\texports.CustomBlending = CustomBlending;\n\texports.AddEquation = AddEquation;\n\texports.SubtractEquation = SubtractEquation;\n\texports.ReverseSubtractEquation = ReverseSubtractEquation;\n\texports.MinEquation = MinEquation;\n\texports.MaxEquation = MaxEquation;\n\texports.ZeroFactor = ZeroFactor;\n\texports.OneFactor = OneFactor;\n\texports.SrcColorFactor = SrcColorFactor;\n\texports.OneMinusSrcColorFactor = OneMinusSrcColorFactor;\n\texports.SrcAlphaFactor = SrcAlphaFactor;\n\texports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor;\n\texports.DstAlphaFactor = DstAlphaFactor;\n\texports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor;\n\texports.DstColorFactor = DstColorFactor;\n\texports.OneMinusDstColorFactor = OneMinusDstColorFactor;\n\texports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor;\n\texports.NeverDepth = NeverDepth;\n\texports.AlwaysDepth = AlwaysDepth;\n\texports.LessDepth = LessDepth;\n\texports.LessEqualDepth = LessEqualDepth;\n\texports.EqualDepth = EqualDepth;\n\texports.GreaterEqualDepth = GreaterEqualDepth;\n\texports.GreaterDepth = GreaterDepth;\n\texports.NotEqualDepth = NotEqualDepth;\n\texports.MultiplyOperation = MultiplyOperation;\n\texports.MixOperation = MixOperation;\n\texports.AddOperation = AddOperation;\n\texports.NoToneMapping = NoToneMapping;\n\texports.LinearToneMapping = LinearToneMapping;\n\texports.ReinhardToneMapping = ReinhardToneMapping;\n\texports.Uncharted2ToneMapping = Uncharted2ToneMapping;\n\texports.CineonToneMapping = CineonToneMapping;\n\texports.UVMapping = UVMapping;\n\texports.CubeReflectionMapping = CubeReflectionMapping;\n\texports.CubeRefractionMapping = CubeRefractionMapping;\n\texports.EquirectangularReflectionMapping = EquirectangularReflectionMapping;\n\texports.EquirectangularRefractionMapping = EquirectangularRefractionMapping;\n\texports.SphericalReflectionMapping = SphericalReflectionMapping;\n\texports.CubeUVReflectionMapping = CubeUVReflectionMapping;\n\texports.CubeUVRefractionMapping = CubeUVRefractionMapping;\n\texports.RepeatWrapping = RepeatWrapping;\n\texports.ClampToEdgeWrapping = ClampToEdgeWrapping;\n\texports.MirroredRepeatWrapping = MirroredRepeatWrapping;\n\texports.NearestFilter = NearestFilter;\n\texports.NearestMipMapNearestFilter = NearestMipMapNearestFilter;\n\texports.NearestMipMapLinearFilter = NearestMipMapLinearFilter;\n\texports.LinearFilter = LinearFilter;\n\texports.LinearMipMapNearestFilter = LinearMipMapNearestFilter;\n\texports.LinearMipMapLinearFilter = LinearMipMapLinearFilter;\n\texports.UnsignedByteType = UnsignedByteType;\n\texports.ByteType = ByteType;\n\texports.ShortType = ShortType;\n\texports.UnsignedShortType = UnsignedShortType;\n\texports.IntType = IntType;\n\texports.UnsignedIntType = UnsignedIntType;\n\texports.FloatType = FloatType;\n\texports.HalfFloatType = HalfFloatType;\n\texports.UnsignedShort4444Type = UnsignedShort4444Type;\n\texports.UnsignedShort5551Type = UnsignedShort5551Type;\n\texports.UnsignedShort565Type = UnsignedShort565Type;\n\texports.UnsignedInt248Type = UnsignedInt248Type;\n\texports.AlphaFormat = AlphaFormat;\n\texports.RGBFormat = RGBFormat;\n\texports.RGBAFormat = RGBAFormat;\n\texports.LuminanceFormat = LuminanceFormat;\n\texports.LuminanceAlphaFormat = LuminanceAlphaFormat;\n\texports.RGBEFormat = RGBEFormat;\n\texports.DepthFormat = DepthFormat;\n\texports.DepthStencilFormat = DepthStencilFormat;\n\texports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format;\n\texports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format;\n\texports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format;\n\texports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format;\n\texports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format;\n\texports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format;\n\texports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format;\n\texports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format;\n\texports.RGB_ETC1_Format = RGB_ETC1_Format;\n\texports.LoopOnce = LoopOnce;\n\texports.LoopRepeat = LoopRepeat;\n\texports.LoopPingPong = LoopPingPong;\n\texports.InterpolateDiscrete = InterpolateDiscrete;\n\texports.InterpolateLinear = InterpolateLinear;\n\texports.InterpolateSmooth = InterpolateSmooth;\n\texports.ZeroCurvatureEnding = ZeroCurvatureEnding;\n\texports.ZeroSlopeEnding = ZeroSlopeEnding;\n\texports.WrapAroundEnding = WrapAroundEnding;\n\texports.TrianglesDrawMode = TrianglesDrawMode;\n\texports.TriangleStripDrawMode = TriangleStripDrawMode;\n\texports.TriangleFanDrawMode = TriangleFanDrawMode;\n\texports.LinearEncoding = LinearEncoding;\n\texports.sRGBEncoding = sRGBEncoding;\n\texports.GammaEncoding = GammaEncoding;\n\texports.RGBEEncoding = RGBEEncoding;\n\texports.LogLuvEncoding = LogLuvEncoding;\n\texports.RGBM7Encoding = RGBM7Encoding;\n\texports.RGBM16Encoding = RGBM16Encoding;\n\texports.RGBDEncoding = RGBDEncoding;\n\texports.BasicDepthPacking = BasicDepthPacking;\n\texports.RGBADepthPacking = RGBADepthPacking;\n\texports.CubeGeometry = BoxGeometry;\n\texports.Face4 = Face4;\n\texports.LineStrip = LineStrip;\n\texports.LinePieces = LinePieces;\n\texports.MeshFaceMaterial = MeshFaceMaterial;\n\texports.MultiMaterial = MultiMaterial;\n\texports.PointCloud = PointCloud;\n\texports.Particle = Particle;\n\texports.ParticleSystem = ParticleSystem;\n\texports.PointCloudMaterial = PointCloudMaterial;\n\texports.ParticleBasicMaterial = ParticleBasicMaterial;\n\texports.ParticleSystemMaterial = ParticleSystemMaterial;\n\texports.Vertex = Vertex;\n\texports.DynamicBufferAttribute = DynamicBufferAttribute;\n\texports.Int8Attribute = Int8Attribute;\n\texports.Uint8Attribute = Uint8Attribute;\n\texports.Uint8ClampedAttribute = Uint8ClampedAttribute;\n\texports.Int16Attribute = Int16Attribute;\n\texports.Uint16Attribute = Uint16Attribute;\n\texports.Int32Attribute = Int32Attribute;\n\texports.Uint32Attribute = Uint32Attribute;\n\texports.Float32Attribute = Float32Attribute;\n\texports.Float64Attribute = Float64Attribute;\n\texports.ClosedSplineCurve3 = ClosedSplineCurve3;\n\texports.SplineCurve3 = SplineCurve3;\n\texports.Spline = Spline;\n\texports.BoundingBoxHelper = BoundingBoxHelper;\n\texports.EdgesHelper = EdgesHelper;\n\texports.WireframeHelper = WireframeHelper;\n\texports.XHRLoader = XHRLoader;\n\texports.BinaryTextureLoader = BinaryTextureLoader;\n\texports.GeometryUtils = GeometryUtils;\n\texports.ImageUtils = ImageUtils;\n\texports.Projector = Projector;\n\texports.CanvasRenderer = CanvasRenderer;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Unit vector\nvar X_UNIT = new _ThreeShim2.default.Vector3(1, 0, 0);\nvar Y_UNIT = new _ThreeShim2.default.Vector3(0, 1, 0);\n\n// Preallocated Quaternion to use each frame.\nvar rotation = new _ThreeShim2.default.Quaternion();\n\n// Emperically determined multipliers\nvar YAW_SPEED = 0.5;\nvar PITCH_SPEED = 0.25;\n\n// Minimum fov when zooming in\nvar MIN_FOV = 10;\n\n/**\n * MobilePanControls allows manipulation of the camera with touch on mobile.\n *\n * Two types of touch gestures are recognized:\n * 1. Swipe - dragging one finger left/right or up/down to rotate the camera\n * 2. Pinch - dragging two fingers together/apart to zoom in/out\n */\n\nvar MobilePanControls = function () {\n  /**\n   * Create a MobilePanControls instance, and attaches the necessary event\n   * listeners\n   * @param camera - A Three.js Camera to control\n   * @param target - An optional DOM element to attach the mouse events to.\n   *   Defaults to the `window` object.\n   */\n  function MobilePanControls(camera, target) {\n    _classCallCheck(this, MobilePanControls);\n\n    this._camera = camera;\n    this._target = target || window;\n\n    this.enabled = true;\n    this._tracking = false;\n\n    this._swipeStart = new _ThreeShim2.default.Vector2();\n    this._swipeEnd = new _ThreeShim2.default.Vector2();\n    this._swipeDelta = new _ThreeShim2.default.Vector2();\n\n    // yaw is left/right rotation, pitch is up/down. Angles in radians.\n    this._yaw = 0;\n    this._pitch = 0;\n\n    this._pinchLengthStart = 0;\n    this._pinchLengthEnd = 0;\n    this._zoomNeedsUpdate = false;\n    this._originalFov = this._camera.fov;\n\n    // Ensure that event handlers are bound to this object\n    this._downHandler = this._downHandler.bind(this);\n    this._moveHandler = this._moveHandler.bind(this);\n    this._upHandler = this._upHandler.bind(this);\n\n    this.connect();\n  }\n\n  _createClass(MobilePanControls, [{\n    key: 'connect',\n    value: function connect() {\n      this._target.addEventListener('touchstart', this._downHandler);\n      window.addEventListener('touchmove', this._moveHandler);\n      window.addEventListener('touchend', this._upHandler);\n      this.enabled = true;\n\n      // Should start untracked.\n      this._tracking = false;\n    }\n  }, {\n    key: 'disconnect',\n    value: function disconnect() {\n      this._target.removeEventListener('touchstart', this._downHandler);\n      window.removeEventListener('touchmove', this._moveHandler);\n      window.removeEventListener('touchend', this._upHandler);\n      this.enabled = false;\n    }\n  }, {\n    key: 'resetRotation',\n    value: function resetRotation(x, y, z) {\n      this._yaw = y;\n      this._pitch = x;\n\n      // Reset zoom.\n      this._camera.fov = this._originalFov;\n      this._camera.updateProjectionMatrix();\n    }\n  }, {\n    key: '_downHandler',\n    value: function _downHandler(e) {\n      this._tracking = true;\n\n      if (e.touches.length > 1) {\n        // Starting pinch-to-zoom\n        var dx = e.touches[0].pageX - e.touches[1].pageX;\n        var dy = e.touches[0].pageY - e.touches[1].pageY;\n        this._pinchLengthStart = Math.sqrt(dx * dx + dy * dy);\n        this._pinchLengthEnd = this.pinchLengthStart;\n        return;\n      }\n      var touch = e.touches[0];\n      this._swipeStart.set(touch.pageX, touch.pageY);\n    }\n  }, {\n    key: '_upHandler',\n    value: function _upHandler() {\n      this._tracking = false;\n    }\n  }, {\n    key: '_moveHandler',\n    value: function _moveHandler(e) {\n      if (!this._tracking) {\n        return;\n      }\n\n      if (e.touches.length > 1) {\n        // Moving pinch-to-zoom\n        var dx = e.touches[0].pageX - e.touches[1].pageX;\n        var dy = e.touches[0].pageY - e.touches[1].pageY;\n        this._pinchLengthEnd = Math.sqrt(dx * dx + dy * dy);\n        this._zoomNeedsUpdate = true;\n        return;\n      }\n\n      var touch = e.touches[0];\n      this._swipeEnd.set(touch.pageX, touch.pageY);\n      this._swipeDelta.subVectors(this._swipeEnd, this._swipeStart);\n      this._swipeStart.copy(this._swipeEnd);\n\n      var element = document.body;\n\n      // Don't move diagonally, only up/down or left/right, whichever delta is greater.\n      if (Math.abs(this._swipeDelta.y) > Math.abs(this._swipeDelta.x)) {\n        var _rotation = 2 * Math.PI * this._swipeDelta.y / element.clientHeight * PITCH_SPEED;\n        // Limit pitch rotation to 90 degress to mimic looking up and down.\n        if (Math.abs(this._pitch + _rotation) <= _ThreeShim2.default.Math.degToRad(90)) {\n          this._pitch += _rotation;\n        }\n      } else {\n        this._yaw += 2 * Math.PI * this._swipeDelta.x / element.clientWidth * YAW_SPEED;\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.enabled) {\n        return;\n      }\n\n      // Update the camera rotation quaternion\n      var quaternion = this._camera.quaternion;\n      rotation.setFromAxisAngle(X_UNIT, this._pitch);\n      quaternion.multiply(rotation);\n      rotation.setFromAxisAngle(Y_UNIT, this._yaw);\n      quaternion.premultiply(rotation);\n\n      // Update camera FOV\n      if (this._zoomNeedsUpdate) {\n        var zoomFactor = this._pinchLengthStart / this._pinchLengthEnd;\n        this._pinchLengthStart = this._pinchLengthEnd;\n        var newFov = this._camera.fov * zoomFactor;\n        // Stop zooming out upon reaching the original FOV of this camera.\n        if (newFov > MIN_FOV && newFov < this._originalFov) {\n          this._camera.fov = newFov;\n          this._camera.updateProjectionMatrix();\n        }\n        this._zoomNeedsUpdate = false;\n      }\n    }\n  }]);\n\n  return MobilePanControls;\n}();\n\nexports.default = MobilePanControls;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar HALF_PI = Math.PI / 2; /**\n                            * Copyright (c) 2016-present, Facebook, Inc.\n                            * All rights reserved.\n                            *\n                            * This source code is licensed under the BSD-style license found in the\n                            * LICENSE file in the root directory of this source tree. An additional grant\n                            * of patent rights can be found in the PATENTS file in the same directory.\n                            *\n                            * \n                            */\n\nvar RADIAN_CONVERT = Math.PI / 180;\n\n/**\n * MousePanControls allows manipulation of the camera through clicking and\n * dragging the mouse on a desktop\n */\n\nvar MousePanControls = function () {\n\n  /**\n   * Create a MousePanControls instance, and attaches the necessary event\n   * listeners\n   * @param camera - A Three.js Camera to control\n   * @param target - An optional DOM element to attach the mouse events to.\n   *   Defaults to the `window` object.\n   */\n  function MousePanControls(camera, target) {\n    _classCallCheck(this, MousePanControls);\n\n    this.yaw = camera.rotation.y;\n    this.pitch = camera.rotation.x;\n    this.camera = camera;\n    this.enabled = true;\n    this.tracking = false;\n    this.target = target || window;\n\n    // Ensure that event handlers are bound to this object\n    this.mouseDownHandler = this.mouseDownHandler.bind(this);\n    this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n    this.mouseUpHandler = this.mouseUpHandler.bind(this);\n\n    this.connect();\n  }\n\n  _createClass(MousePanControls, [{\n    key: 'connect',\n    value: function connect() {\n      this.target.addEventListener('mousedown', this.mouseDownHandler);\n      window.addEventListener('mousemove', this.mouseMoveHandler);\n      window.addEventListener('mouseup', this.mouseUpHandler);\n      this.enabled = true;\n\n      // Should start untracked.\n      this.tracking = false;\n    }\n  }, {\n    key: 'disconnect',\n    value: function disconnect() {\n      this.target.removeEventListener('mousedown', this.mouseDownHandler);\n      window.removeEventListener('mousemove', this.mouseMoveHandler);\n      window.removeEventListener('mouseup', this.mouseUpHandler);\n      this.enabled = false;\n    }\n  }, {\n    key: 'mouseDownHandler',\n    value: function mouseDownHandler(e) {\n      this.tracking = true;\n      this.lastX = e.screenX;\n      this.lastY = e.screenY;\n    }\n  }, {\n    key: 'mouseUpHandler',\n    value: function mouseUpHandler() {\n      this.tracking = false;\n    }\n  }, {\n    key: 'mouseMoveHandler',\n    value: function mouseMoveHandler(e) {\n      if (!this.tracking) {\n        return;\n      }\n\n      var width = window.innerWidth;\n      var height = window.innerHeight;\n      if (this.target !== window) {\n        width = this.target.clientWidth;\n        height = this.target.clientHeight;\n      }\n      var deltaX = typeof this.lastX === 'number' ? e.screenX - this.lastX : 0;\n      var deltaY = typeof this.lastY === 'number' ? e.screenY - this.lastY : 0;\n      this.lastX = e.screenX;\n      this.lastY = e.screenY;\n      this.yaw += deltaX / width * this.camera.fov * this.camera.aspect * RADIAN_CONVERT;\n      this.pitch += deltaY / height * this.camera.fov * RADIAN_CONVERT;\n      this.pitch = Math.max(-HALF_PI, Math.min(HALF_PI, this.pitch));\n    }\n  }, {\n    key: 'resetRotation',\n    value: function resetRotation(x, y, z) {\n      this.yaw = y;\n      this.pitch = x;\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.enabled) {\n        return;\n      }\n      this.camera.rotation.set(this.pitch, this.yaw, 0, 'YXZ');\n    }\n  }]);\n\n  return MousePanControls;\n}();\n\nexports.default = MousePanControls;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar VRControls = function () {\n  function VRControls(camera, vrDisplay) {\n    _classCallCheck(this, VRControls);\n\n    this.camera = camera;\n    this._vrDisplay = vrDisplay;\n  }\n\n  _createClass(VRControls, [{\n    key: 'update',\n    value: function update() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      var pose = options.frameData ? options.frameData.pose : null;\n      if (pose) {\n        // Positional tracking from Rift-type headsets\n        if (pose.position) {\n          this.camera.position.fromArray(pose.position);\n        }\n        if (pose.orientation) {\n          this.camera.quaternion.fromArray(pose.orientation);\n        }\n      }\n    }\n  }, {\n    key: 'vrDisplay',\n    get: function get() {\n      return this._vrDisplay;\n    }\n  }]);\n\n  return VRControls;\n}(); /**\n      * Copyright (c) 2016-present, Facebook, Inc.\n      * All rights reserved.\n      *\n      * This source code is licensed under the BSD-style license found in the\n      * LICENSE file in the root directory of this source tree. An additional grant\n      * of patent rights can be found in the PATENTS file in the same directory.\n      *\n      * \n      */\n\nexports.default = VRControls;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n/**\n * Heavily inspired by VREffect by dmarcos and mrdoob\n * https://github.com/mrdoob/three.js/\n *\n * This version relies on an external caller to handle the VR Display, and\n * removes a number of unneeded methods.\n */\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_LEFT_BOUNDS = [0.0, 0.0, 0.5, 1.0];\nvar DEFAULT_RIGHT_BOUNDS = [0.5, 0.0, 0.5, 1.0];\n// Pre-allocate objects\nvar leftCamera = new _ThreeShim2.default.PerspectiveCamera();\nleftCamera.layers.enable(1);\nleftCamera.viewID = 0;\nvar rightCamera = new _ThreeShim2.default.PerspectiveCamera();\nrightCamera.layers.enable(2);\nrightCamera.viewID = 1;\nvar leftTranslation = new _ThreeShim2.default.Vector3();\nvar rightTranslation = new _ThreeShim2.default.Vector3();\n\nvar VREffect = function () {\n  function VREffect(renderer, vrDisplay) {\n    _classCallCheck(this, VREffect);\n\n    this.renderer = renderer;\n    this.vrDisplay = vrDisplay;\n    this.leftBounds = DEFAULT_LEFT_BOUNDS;\n    this.rightBounds = DEFAULT_RIGHT_BOUNDS;\n\n    this.originalSize = renderer.getSize();\n    this.originalPixelRatio = renderer.getPixelRatio();\n  }\n\n  // Given a vrDisplay object, configure the render buffers based on the\n  // current eye parameters.\n  // CONSIDER: Taking into account a scaling factor for graceful degrade\n  // of the eye buffer size for hitting frame rate.\n\n\n  _createClass(VREffect, [{\n    key: '_configureRendererForVRDisplay',\n    value: function _configureRendererForVRDisplay() {\n      var leftParams = this.vrDisplay.getEyeParameters('left');\n      var rightParams = this.vrDisplay.getEyeParameters('right');\n\n      this.renderer.setPixelRatio(1);\n      this.renderer.setSize(leftParams.renderWidth + rightParams.renderWidth, Math.min(leftParams.renderHeight, rightParams.renderHeight), false);\n    }\n  }, {\n    key: 'requestPresent',\n    value: function requestPresent() {\n      var _this = this;\n\n      if (!this.vrDisplay) {\n        return Promise.reject();\n      }\n      if (this.vrDisplay.isPresenting) {\n        // Already presenting\n        return Promise.resolve();\n      }\n      return this.vrDisplay.requestPresent([{\n        source: this.renderer.domElement\n      }]).then(function () {\n        _this._configureRendererForVRDisplay();\n      });\n    }\n  }, {\n    key: 'exitPresent',\n    value: function exitPresent() {\n      var _this2 = this;\n\n      if (!this.vrDisplay) {\n        // If there is no display, exiting should be seen as \"successful,\"\n        // since it leaves us in the same expected state\n        return Promise.resolve();\n      }\n      if (!this.vrDisplay.isPresenting) {\n        // Already exited\n        return Promise.resolve();\n      }\n\n      return this.vrDisplay.exitPresent().then(function () {\n        _this2.renderer.setPixelRatio(_this2.originalPixelRatio);\n        _this2.renderer.setSize(_this2.originalSize.width, _this2.originalSize.height, false);\n      });\n    }\n  }, {\n    key: 'setSize',\n    value: function setSize(width, height) {\n      this.originalSize = { width: width, height: height };\n\n      if (this.vrDisplay && this.vrDisplay.isPresenting) {\n        this._configureRendererForVRDisplay();\n      } else {\n        this.renderer.setPixelRatio(this.originalPixelRatio);\n        this.renderer.setSize(width, height, false);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render(scene, camera, frameData) {\n      if (this.vrDisplay && this.vrDisplay.isPresenting) {\n        // Temporarily turn off automatic updates\n        var preserveAutoUpdate = scene.autoUpdate;\n        if (preserveAutoUpdate) {\n          scene.updateMatrixWorld();\n          scene.autoUpdate = false;\n        }\n\n        var leftParams = this.vrDisplay.getEyeParameters('left');\n        leftTranslation.fromArray(leftParams.offset);\n        var rightParams = this.vrDisplay.getEyeParameters('right');\n        rightTranslation.fromArray(rightParams.offset);\n\n        var size = this.renderer.getSize();\n        var leftRect = {\n          x: Math.round(size.width * this.leftBounds[0]),\n          y: Math.round(size.height * this.leftBounds[1]),\n          width: Math.round(size.width * this.leftBounds[2]),\n          height: Math.round(size.height * this.leftBounds[3])\n        };\n        var rightRect = {\n          x: Math.round(size.width * this.rightBounds[0]),\n          y: Math.round(size.height * this.rightBounds[1]),\n          width: Math.round(size.width * this.rightBounds[2]),\n          height: Math.round(size.height * this.rightBounds[3])\n        };\n\n        this.renderer.setScissorTest(true);\n\n        if (this.renderer.autoClear) {\n          this.renderer.clear();\n        }\n\n        if (!camera.parent) {\n          camera.updateMatrixWorld();\n        }\n\n        camera.matrixWorld.decompose(leftCamera.position, leftCamera.quaternion, leftCamera.scale);\n        camera.matrixWorld.decompose(rightCamera.position, rightCamera.quaternion, rightCamera.scale);\n\n        leftCamera.translateOnAxis(leftTranslation, 1);\n        rightCamera.translateOnAxis(rightTranslation, 1);\n\n        leftCamera.projectionMatrix.elements = frameData.leftProjectionMatrix;\n        rightCamera.projectionMatrix.elements = frameData.rightProjectionMatrix;\n\n        // Prepare the scene backgrounds for each eye if ready\n        var backupScene = scene.background;\n        // Only allow stereo background rendering if both backgrounds have been set\n        // otherwise the user will see the background in only one eye.\n        var isStereoBackgroundReady = !!scene.backgroundLeft && !!scene.backgroundRight;\n\n        // Swap in our left eye background if both backgrounds are ready\n        if (isStereoBackgroundReady) {\n          scene.background = scene.backgroundLeft;\n        }\n        // Set up the left eye viewport and scissor then render the left eye\n        this.renderer.setViewport(leftRect.x, leftRect.y, leftRect.width, leftRect.height);\n        this.renderer.setScissor(leftRect.x, leftRect.y, leftRect.width, leftRect.height);\n        this.renderer.render(scene, leftCamera);\n\n        // Swap in our right eye background if both backgrounds are ready\n        if (isStereoBackgroundReady) {\n          scene.background = scene.backgroundRight;\n        }\n        // Set up the right eye viewport and scissor then render the right eye\n        this.renderer.setViewport(rightRect.x, rightRect.y, rightRect.width, rightRect.height);\n        this.renderer.setScissor(rightRect.x, rightRect.y, rightRect.width, rightRect.height);\n        this.renderer.render(scene, rightCamera);\n\n        // Reset the previous background\n        scene.background = backupScene;\n\n        // Reset viewport\n        this.renderer.setViewport(0, 0, size.width, size.height);\n        this.renderer.setScissorTest(false);\n\n        // Restores the scene's autoupdate property\n        if (preserveAutoUpdate) {\n          scene.autoUpdate = true;\n        }\n        this.vrDisplay.submitFrame();\n      }\n    }\n  }]);\n\n  return VREffect;\n}();\n\nexports.default = VREffect;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SDFFONT_MARKER_COLOR = exports.TOP = exports.RIGHT_LINE = exports.RIGHT = exports.LEFT = exports.CENTER_LINE = exports.CENTER_FIXEDHEIGHT = exports.CENTER = exports.BOTTOM = exports.BASELINE = undefined;\nexports.splitLines = splitLines;\nexports.wrapLines = wrapLines;\nexports.measureText = measureText;\nexports.BitmapFontGeometry = BitmapFontGeometry;\nexports.loadFont = loadFont;\nexports.addFontFallback = addFontFallback;\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _DefaultFont = require('./DefaultFont');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n/**\n * This file exports BitmapFontGeometry, which creates geometry used to display text\n * with alignment/wrapping. Includes loadFont(), measureText() and alignment constants.\n * Font includes glyph data and material, where material uses custom distance field shader.\n *\n * The texture format of the font is a signed distance field as this allows scaling of\n * the font with the same set of texture data. As generation of the font happens upfront\n * new glyphs are not added dynamically to combat this a number of example fonts for various\n * localizations are included.\n *\n * The weight of the font can be controlled through the use of the fontParms.\n * Default values for this are `{AlphaCenter: 0.47, ColorCenter: 0.49}`\n * which will give a thin font that has been tested to not alias at typical display\n * heights. If a thicker font is desired the AlphaCenter can be reduced which will increase\n * the black border or both AlphaCenter and ColorCenter can be reduced which will increase\n * the internal width. Good values are in the 0.4 to 0.5 range.\n */\n\nvar BASELINE = exports.BASELINE = 'baseline';\nvar BOTTOM = exports.BOTTOM = 'bottom';\nvar CENTER = exports.CENTER = 'center';\nvar CENTER_FIXEDHEIGHT = exports.CENTER_FIXEDHEIGHT = 'center_fixedheight';\nvar CENTER_LINE = exports.CENTER_LINE = 'center_line';\nvar LEFT = exports.LEFT = 'left';\nvar RIGHT = exports.RIGHT = 'right';\nvar RIGHT_LINE = exports.RIGHT_LINE = 'right_line';\nvar TOP = exports.TOP = 'top';\nvar SDFFONT_MARKER_COLOR = exports.SDFFONT_MARKER_COLOR = 0;\n\n/*\n * Helpers for handling common control characters\n */\nfunction isBreakable(code) {\n  return code === 32 || code === 13 || code === 10;\n}\nfunction isNewLine(code) {\n  return code === 13 || code === 10;\n}\nfunction isWhiteSpace(code) {\n  return code === 32 || code === 9;\n}\n\nvar vertexShader = '\\nvarying vec2 vUv;\\nattribute vec4 fontParms;\\nattribute vec4 textColors;\\nvarying vec4 vFontParms;\\nvarying vec4 vTextColor;\\nvarying vec4 vMVPosition;\\nvoid main( ) {\\n  vUv = uv;\\n  vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n  vFontParms = fontParms;\\n  vTextColor = textColors;\\n  vMVPosition = mvPosition;\\n  gl_Position = projectionMatrix * mvPosition;\\n}\\n';\n\n/**\n * Signed distance field font shader which makes use of fontParms encoded per vertex.\n * The use of per vertex fontParams allows the potential of encoding changable params\n * within one render\n */\nvar fragmentShader = '\\nuniform sampler2D texture;\\nuniform vec4 textColor;\\nuniform vec4 clipRegion;\\nvarying vec4 vTextColor;\\nvarying vec4 vFontParms;\\nvarying vec4 vMVPosition;\\nvarying vec2 vUv;\\nvoid main( void ) {\\n  float distance = texture2D( texture, vUv ).r;\\n  float ds = vFontParms.z * 255.0;\\n  float dd = fwidth( vUv.x ) * vFontParms.w * 16.0 * ds;\\n  float ALPHA_MIN = vFontParms.x - dd;\\n  float ALPHA_MAX = vFontParms.x + dd;\\n  float COLOR_MIN = vFontParms.y - dd;\\n  float COLOR_MAX = vFontParms.y + dd;\\n  float value = ( clamp( distance, COLOR_MIN, COLOR_MAX ) - COLOR_MIN ) / max(0.00001, COLOR_MAX - COLOR_MIN );\\n  float alpha = ( clamp( distance, ALPHA_MIN, ALPHA_MAX ) - ALPHA_MIN ) / max(0.00001,  ALPHA_MAX - ALPHA_MIN );\\n  if (vMVPosition.x < clipRegion.x) {\\n    discard;\\n  }\\n  if (vMVPosition.y < clipRegion.y) {\\n    discard;\\n  }\\n  if (vMVPosition.x > clipRegion.z) {\\n    discard;\\n  }\\n  if (vMVPosition.y > clipRegion.w) {\\n    discard;\\n  }\\n  float premultAlphaValue = value * vTextColor.w * textColor.w;\\n  gl_FragColor = vec4(\\n    premultAlphaValue,\\n    premultAlphaValue,\\n    premultAlphaValue,\\n    alpha) *\\n    vTextColor *\\n    textColor;\\n}\\n';\n\n// internal helper to object to break text into lines\nfunction LineBreaker(text, fontObject, fontHeight) {\n  var fallback = fontObject.data.CharMap[42];\n  return {\n    text: text,\n    fontObject: fontObject,\n    cursor: 0,\n    nextBreak: function nextBreak(maxWidth) {\n      var width = 0;\n      if (this.cursor >= this.text.length) {\n        return null;\n      }\n      var code = this.text.charCodeAt(this.cursor++);\n      if (code === SDFFONT_MARKER_COLOR) {\n        this.cursor += 4;\n        if (this.cursor >= this.text.length) {\n          return null;\n        }\n        code = this.text.charCodeAt(this.cursor++);\n      }\n\n      var curFontObject = this.fontObject;\n      var g = this.fontObject.data.CharMap[code];\n      if (!g) {\n        for (var index = 0; index < this.fontObject.fallbacks.length; index++) {\n          var fallbackFontObject = this.fontObject.fallbacks[index];\n          g = fallbackFontObject.data.CharMap[code];\n          if (g) {\n            curFontObject = fallbackFontObject;\n            break;\n          }\n        }\n      }\n      g = g || fallback;\n      curFontObject = curFontObject || this.fontObject;\n      var font = curFontObject.data;\n      var xScale = fontHeight / font.FontHeight;\n\n      width += g.AdvanceX * xScale;\n      if (isBreakable(code)) {\n        return {\n          position: this.cursor,\n          required: isNewLine(code),\n          whitespace: isWhiteSpace(code),\n          split: false,\n          width: width\n        };\n      }\n      code = this.text.charCodeAt(this.cursor);\n      if (code === SDFFONT_MARKER_COLOR) {\n        this.cursor += 5;\n        code = this.text.charCodeAt(this.cursor);\n      }\n      while (this.cursor < this.text.length && !isBreakable(code)) {\n        var _g = font.CharMap[code] || fallback;\n        var w = _g.AdvanceX * xScale;\n        if (width + w > maxWidth) {\n          return {\n            position: this.cursor,\n            required: false,\n            whitespace: false,\n            split: true,\n            width: width\n          };\n        }\n        width += w;\n        this.cursor++;\n        code = this.text.charCodeAt(this.cursor);\n        if (code === SDFFONT_MARKER_COLOR) {\n          this.cursor += 5;\n          code = this.text.charCodeAt(this.cursor);\n        }\n      }\n      return {\n        position: this.cursor,\n        required: false,\n        whitespace: false,\n        split: false,\n        width: width\n      };\n    }\n  };\n}\n\n/*\n * split input string into lines based on fontHeight and maxWidth. THis will stop splitting\n * based on the settings of maxHeight and maxLines\n * @param fontObject - loaded font object\n * @param text - string containing the text to render\n * @param fontHeight - default font Height in world units\n * @param maxWidth - max width in world units\n * @param maxHeight - max height to fit font into in world units\n * @param maxLines - max number of lines to display\n * @return - array of strings for each line\n */\nfunction splitLines(fontObject, text, fontHeight, maxWidth, maxHeight, maxLines, hasPerPixelClip) {\n  var lineStart = 0;\n  var lastOption = 0;\n  var breaker = new LineBreaker(text, fontObject, fontHeight);\n  var bk = void 0;\n  var lines = [];\n  var lineWidth = 0;\n  while (bk = breaker.nextBreak(maxWidth)) {\n    if (bk.whitespace && lineWidth === 0) {\n      lineStart = bk.position;\n    }\n    // potentially move to a new line\n    if (bk.required || lineWidth !== 0 && lineWidth + bk.width > maxWidth) {\n      if (lineStart !== lastOption) {\n        lines[lines.length] = text.slice(lineStart, lastOption).trim();\n      }\n      lineWidth = 0;\n      lineStart = lastOption;\n      // dont start a new line with a single white space character\n      if (bk.whitespace) {\n        lineStart = bk.position;\n        continue;\n      }\n    }\n    lineWidth += bk.width;\n    lastOption = bk.position;\n  }\n  // add final line\n  if (lineStart < text.length) {\n    lines[lines.length] = text.slice(lineStart).trim();\n  }\n  // cap the number of lines\n  if (maxLines > 0) {\n    lines.splice(maxLines);\n  }\n  // cap the number of lines based on the maxHeight\n  if (maxHeight) {\n    if (hasPerPixelClip) {\n      lines.splice(Math.ceil(maxHeight / fontHeight));\n    } else {\n      lines.splice(Math.floor(maxHeight / fontHeight));\n    }\n  }\n  return lines;\n}\n\n/*\n * compute single strings with wrapping to fit within width\n * unlike splitlines, wrap lines will output a single string\n * @param fontObject - loaded font object\n * @param text - string containing the text to render\n * @param fontHeight - default font Height in world units\n * @param maxWidth - max width in world units\n * @param maxHeight - max height to fit font into in world units\n * @param maxLines - max number of lines to display\n * @return - single string of text with new line characters\n */\nfunction wrapLines(fontObject, text, fontHeight, maxWidth, maxHeight, maxLines, hasPerPixelClip) {\n  return splitLines(fontObject, text, fontHeight, maxWidth, maxHeight, maxLines, hasPerPixelClip).join('\\n');\n}\n\n/*\n * determine text extents based on the text input\n * if measuring of the text needs to fit in a certain width `wrapLines` should be called\n * and the results of that should be input into measureText\n * @param fontObject - loaded font object\n * @param text - string containing the text to render\n * @param fontHeight - default font Height in world units\n */\nfunction measureText(fontObject, text, fontHeight) {\n  var dim = {\n    maxWidth: 0,\n    maxHeight: 0,\n    maxDescent: 0,\n    numLines: 1,\n    lineWidths: []\n  };\n  // calculate the unit size of the input font\n  var width = 0;\n  var fallback = fontObject.data.CharMap[42];\n  for (var i = 0; i < text.length; i++) {\n    var charCode = text.charCodeAt(i);\n    if (charCode === SDFFONT_MARKER_COLOR) {\n      i += 4;\n      continue;\n    }\n    // test for new line and update current maxWidth\n    if (isNewLine(charCode)) {\n      if (width > dim.maxWidth) {\n        dim.maxWidth = width;\n      }\n      if (i !== text.length - 1) {\n        dim.maxHeight += fontHeight;\n        dim.maxDescent = 0;\n      }\n      // store the lines width\n      dim.lineWidths[dim.lineWidths.length] = width;\n      width = 0;\n      dim.numLines++;\n      continue;\n    }\n    // look up the glyph\n    var curFontObject = fontObject;\n    var g = fontObject.data.CharMap[charCode];\n    if (!g) {\n      for (var index = 0; index < fontObject.fallbacks.length; index++) {\n        var fallbackFontObject = fontObject.fallbacks[index];\n        g = fallbackFontObject.data.CharMap[charCode];\n        if (g) {\n          curFontObject = fallbackFontObject;\n          break;\n        }\n      }\n    }\n    g = g || fallback;\n    curFontObject = curFontObject || fontObject;\n    var font = curFontObject.data;\n    var xScale = fontHeight / font.FontHeight;\n    var yScale = fontHeight / font.FontHeight;\n\n    var descent = (g.Height - g.BearingY) * yScale;\n    if (descent > dim.maxDescent) {\n      dim.maxDescent = descent;\n    }\n    width += g.AdvanceX * xScale;\n  }\n  if (width > dim.maxWidth) {\n    dim.maxWidth = width;\n  }\n  if (width > 0) {\n    dim.maxHeight += fontHeight;\n    dim.lineWidths[dim.lineWidths.length] = width;\n  }\n  if (dim.maxDescent > 0) {\n    dim.maxHeight += dim.maxDescent;\n  }\n\n  return dim;\n}\n\n/**\n * Specialisation of Three.js BufferGeometry for creation of Signed Distance Field fonts\n */\nfunction BitmapFontGeometry(fontObject, text, fontHeight) {\n  var config = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  var frame = config.frame || [0, 0, 0, 0];\n  var deltaZ = config.deltaZ || 0;\n  var hAlign = config.hAlign || LEFT;\n  var vAlign = config.vAlign || BASELINE;\n  var fontParms = config.fontParms || {\n    AlphaCenter: 0.47,\n    ColorCenter: 0.49\n  };\n  // Caller may have already computed dim via measureText, e.g. for autoScaling.\n  var dim = config.dim || measureText(fontObject, text, fontHeight);\n  // encode the fontParams within bytes to allow compactly passing in vertex shader\n  var fontParamsAlphaCenter = Math.min(255, fontParms.AlphaCenter * 255 || 108);\n  var fontParamsColorCenter = Math.min(255, fontParms.ColorCenter * 255 || 128);\n\n  // Run the constructor of the superclass\n  _ThreeShim2.default.BufferGeometry.apply(this);\n\n  // return if the font data is not yet setup\n  if (!fontObject.data) {\n    return;\n  }\n\n  // calculate unit scaling\n  var curPos = [0, 0];\n\n  var numGlyphs = text.length;\n  // allocate for the worst case number of entries\n  var positionsBuffer = new Float32Array(numGlyphs * 4 * 3);\n  var texCoordBuffer = new Float32Array(numGlyphs * 4 * 2);\n  var fontParmsBuffer = new Uint8Array(numGlyphs * 4 * 4);\n  var textColorBuffer = new Uint8Array(numGlyphs * 4 * 4);\n  var indicesBuffer = new Uint32Array(numGlyphs * 6);\n\n  // horizontal alignment setup\n  if (hAlign === LEFT) {\n    curPos[0] = frame[0];\n  } else if (hAlign === CENTER) {\n    curPos[0] = frame[0] + frame[2] / 2 - dim.maxWidth / 2;\n  } else if (hAlign === RIGHT) {\n    curPos[0] = frame[0] + frame[2] - dim.maxWidth;\n  }\n\n  var baseFont = fontObject.data;\n  // vertical alignment setup\n  var yBaseScale = fontHeight / fontObject.data.FontHeight;\n  if (vAlign === BASELINE) {\n    curPos[1] = frame[1] + dim.maxHeight - fontHeight;\n  } else if (vAlign === CENTER) {\n    var ma = baseFont.MaxAscent;\n    var md = baseFont.MaxDescent;\n    var fh = baseFont.FontHeight;\n    // one line of full extent of font plus dim.numLines - 1 of fontHeight\n    var maxFontExtent = ma + md + fh * (dim.numLines - 1);\n    curPos[1] = (maxFontExtent / 2 - fh) * yBaseScale;\n  } else if (vAlign === CENTER_FIXEDHEIGHT) {\n    // for fixed height, we must adjust single-line text by the max ascent because fonts\n    // are rendered according to their baseline. For multiline text, the first line\n    // contributes max ascent only while the other lines are adjusted by font height.\n    var _ma = baseFont.MaxAscent;\n    var _md = baseFont.MaxDescent;\n    var _fh = baseFont.FontHeight;\n    var maxFontHeight = _ma + _md;\n    var maxTextHeight = (_fh * (dim.numLines - 1) + maxFontHeight) * yBaseScale;\n    curPos[1] = (maxTextHeight - fontHeight) * 0.5 - _md * yBaseScale;\n  } else if (vAlign === TOP) {\n    curPos[1] = frame[1] + frame[3] - fontHeight;\n  } else if (vAlign === BOTTOM) {\n    curPos[1] = frame[1] + dim.maxHeight - fontHeight;\n  }\n\n  // prepare horizontal alignment\n  var startX = curPos[0];\n  if (hAlign === CENTER_LINE) {\n    curPos[0] = frame[0] + frame[2] / 2 - dim.lineWidths[0] / 2;\n  } else if (hAlign === RIGHT_LINE) {\n    curPos[0] = frame[0] + frame[2] - dim.lineWidths[0];\n  }\n  var offsetZ = 0.0;\n  var lineIndex = 0;\n  var index = 0;\n  var textColor = [0xff, 0xff, 0xff, 0xff];\n  var fallback = baseFont.CharMap[42];\n  var lastGroupIndex = 0;\n  var lastFontObject = fontObject;\n\n  var materials = [];\n  for (var i = 0; i < text.length; i++) {\n    var charCode = text.charCodeAt(i);\n    if (charCode === SDFFONT_MARKER_COLOR) {\n      textColor[0] = text.charCodeAt(i + 1);\n      textColor[1] = text.charCodeAt(i + 2);\n      textColor[2] = text.charCodeAt(i + 3);\n      textColor[3] = text.charCodeAt(i + 4);\n      i += 4;\n      continue;\n    }\n    if (isNewLine(charCode)) {\n      curPos[0] = startX;\n      curPos[1] -= fontHeight;\n      lineIndex++;\n\n      // handle per line alignment\n      if (hAlign === CENTER_LINE) {\n        curPos[0] = frame[0] + frame[2] / 2 - dim.lineWidths[lineIndex] / 2;\n      } else if (hAlign === RIGHT_LINE) {\n        curPos[0] = frame[0] + frame[2] - dim.lineWidths[lineIndex];\n      }\n      // add empty glyph\n      continue;\n    }\n    var curFontObject = fontObject;\n    var g = fontObject.data.CharMap[charCode];\n    if (!g) {\n      for (var _index = 0; _index < fontObject.fallbacks.length; _index++) {\n        var fallbackFontObject = fontObject.fallbacks[_index];\n        g = fallbackFontObject.data.CharMap[charCode];\n        if (g) {\n          curFontObject = fallbackFontObject;\n          break;\n        }\n      }\n    }\n    g = g || fallback;\n    curFontObject = curFontObject || fontObject;\n    var font = curFontObject.data;\n    var xScale = fontHeight / font.FontHeight;\n    var yScale = fontHeight / font.FontHeight;\n\n    if (curFontObject !== lastFontObject) {\n      if (lastGroupIndex !== index) {\n        this.addGroup(lastGroupIndex * 6, (index - lastGroupIndex) * 6, materials.length);\n        materials.push(lastFontObject.material);\n      }\n      lastGroupIndex = index;\n      lastFontObject = curFontObject;\n    }\n\n    var s0 = g.X / font.NaturalWidth;\n    var t0 = g.Y / font.NaturalHeight;\n    var s1 = (g.X + g.Width) / font.NaturalWidth;\n    var t1 = (g.Y + g.Height) / font.NaturalHeight;\n\n    var bearingX = g.BearingX * xScale;\n    var bearingY = g.BearingY * yScale;\n\n    var rw = (g.Width + g.BearingX) * xScale;\n    var rh = (g.Height - g.BearingY) * yScale;\n    var r = [1, 0, 0];\n    var u = [0, 1, 0];\n\n    // add glyph\n    positionsBuffer[index * 12 + 0] = curPos[0] + r[0] * bearingX - u[0] * rh;\n    positionsBuffer[index * 12 + 1] = curPos[1] + r[1] * bearingX - u[1] * rh;\n    positionsBuffer[index * 12 + 2] = offsetZ + r[2] * bearingX - u[2] * rh;\n    texCoordBuffer[index * 8 + 0] = s0;\n    texCoordBuffer[index * 8 + 1] = t1;\n    fontParmsBuffer[index * 16 + 0] = fontParamsAlphaCenter;\n    fontParmsBuffer[index * 16 + 1] = fontParamsColorCenter;\n    fontParmsBuffer[index * 16 + 2] = 0x02;\n    fontParmsBuffer[index * 16 + 3] = 0xff;\n    textColorBuffer[index * 16 + 0] = textColor[0];\n    textColorBuffer[index * 16 + 1] = textColor[1];\n    textColorBuffer[index * 16 + 2] = textColor[2];\n    textColorBuffer[index * 16 + 3] = textColor[3];\n\n    positionsBuffer[index * 12 + 3] = curPos[0] + r[0] * bearingX + u[0] * bearingY;\n    positionsBuffer[index * 12 + 4] = curPos[1] + r[1] * bearingX + u[1] * bearingY;\n    positionsBuffer[index * 12 + 5] = offsetZ + r[2] * bearingX + u[2] * bearingY;\n    texCoordBuffer[index * 8 + 2] = s0;\n    texCoordBuffer[index * 8 + 3] = t0;\n    fontParmsBuffer[index * 16 + 4] = fontParamsAlphaCenter;\n    fontParmsBuffer[index * 16 + 5] = fontParamsColorCenter;\n    fontParmsBuffer[index * 16 + 6] = 0x02;\n    fontParmsBuffer[index * 16 + 7] = 0xff;\n    textColorBuffer[index * 16 + 4] = textColor[0];\n    textColorBuffer[index * 16 + 5] = textColor[1];\n    textColorBuffer[index * 16 + 6] = textColor[2];\n    textColorBuffer[index * 16 + 7] = textColor[3];\n\n    positionsBuffer[index * 12 + 6] = curPos[0] + r[0] * rw + u[0] * bearingY;\n    positionsBuffer[index * 12 + 7] = curPos[1] + r[1] * rw + u[1] * bearingY;\n    positionsBuffer[index * 12 + 8] = offsetZ + r[2] * rw + u[2] * bearingY;\n    texCoordBuffer[index * 8 + 4] = s1;\n    texCoordBuffer[index * 8 + 5] = t0;\n    fontParmsBuffer[index * 16 + 8] = fontParamsAlphaCenter;\n    fontParmsBuffer[index * 16 + 9] = fontParamsColorCenter;\n    fontParmsBuffer[index * 16 + 10] = 0x02;\n    fontParmsBuffer[index * 16 + 11] = 0xff;\n    textColorBuffer[index * 16 + 8] = textColor[0];\n    textColorBuffer[index * 16 + 9] = textColor[1];\n    textColorBuffer[index * 16 + 10] = textColor[2];\n    textColorBuffer[index * 16 + 11] = textColor[3];\n\n    positionsBuffer[index * 12 + 9] = curPos[0] + r[0] * rw - u[0] * rh;\n    positionsBuffer[index * 12 + 10] = curPos[1] + r[1] * rw - u[1] * rh;\n    positionsBuffer[index * 12 + 11] = offsetZ + r[2] * rw - u[2] * rh;\n    texCoordBuffer[index * 8 + 6] = s1;\n    texCoordBuffer[index * 8 + 7] = t1;\n    fontParmsBuffer[index * 16 + 12] = fontParamsAlphaCenter;\n    fontParmsBuffer[index * 16 + 13] = fontParamsColorCenter;\n    fontParmsBuffer[index * 16 + 14] = 0x02;\n    fontParmsBuffer[index * 16 + 15] = 0xff;\n    textColorBuffer[index * 16 + 12] = textColor[0];\n    textColorBuffer[index * 16 + 13] = textColor[1];\n    textColorBuffer[index * 16 + 14] = textColor[2];\n    textColorBuffer[index * 16 + 15] = textColor[3];\n\n    indicesBuffer[index * 6 + 0] = index * 4 + 0;\n    indicesBuffer[index * 6 + 1] = index * 4 + 1;\n    indicesBuffer[index * 6 + 2] = index * 4 + 2;\n    indicesBuffer[index * 6 + 3] = index * 4 + 0;\n    indicesBuffer[index * 6 + 4] = index * 4 + 2;\n    indicesBuffer[index * 6 + 5] = index * 4 + 3;\n\n    index++;\n    curPos[0] += g.AdvanceX * xScale;\n    offsetZ += deltaZ;\n  }\n\n  // set the common and shader specfic font buffers\n  this.type = 'SDFText';\n  this.isSDFText = true;\n  this.onBeforeRender = function (object, material) {\n    if (object.parent.textColor) {\n      material.uniforms.textColor.value.set(object.parent.textColor.r, object.parent.textColor.g, object.parent.textColor.b, object.opacity);\n    }\n    var textClip = object.textClip;\n    if (textClip && object.parent.clippingEnabled) {\n      material.uniforms.clipRegion.value.set(textClip[0], textClip[1], textClip[2], textClip[3]);\n    } else {\n      material.uniforms.clipRegion.value.set(-16384, -16384, 16384, 16384);\n    }\n  };\n  this.textClip = [-16384, -16384, 16384, 16384];\n  this.addAttribute('position', new _ThreeShim2.default.BufferAttribute(positionsBuffer, 3));\n  this.addAttribute('uv', new _ThreeShim2.default.BufferAttribute(texCoordBuffer, 2));\n  this.addAttribute('fontParms', new _ThreeShim2.default.BufferAttribute(fontParmsBuffer, 4, true));\n  this.addAttribute('textColors', new _ThreeShim2.default.BufferAttribute(textColorBuffer, 4, true));\n  this.setIndex(new _ThreeShim2.default.BufferAttribute(indicesBuffer, 1));\n  if (lastGroupIndex !== index) {\n    this.addGroup(lastGroupIndex * 6, (index - lastGroupIndex) * 6, materials.length);\n    materials.push(lastFontObject.material);\n  }\n  this.computeBoundingSphere();\n  this.materials = materials;\n}\n\nBitmapFontGeometry.prototype = Object.create(_ThreeShim2.default.BufferGeometry.prototype);\nBitmapFontGeometry.prototype.constructor = BitmapFontGeometry;\n\n/**\n * Load the external resources necessary to render a font.\n * @return A Promise that is resolved with the font data when all\n *   resources have been processed.\n */\nfunction loadFont(fontName, fontTexture, loader) {\n  if (!fontName) {\n    // Use default font\n    fontTexture = _DefaultFont.DEFAULT_FONT_TEXTURE;\n  }\n  var tex = new _ThreeShim2.default.TextureLoader().load(fontTexture, function (texture) {\n    texture.wrapS = _ThreeShim2.default.ClampToEdgeWrapping;\n    texture.wrapT = _ThreeShim2.default.ClampToEdgeWrapping;\n    texture.minFilter = _ThreeShim2.default.LinearFilter;\n    texture.flipY = false;\n  });\n\n  var uniforms = {\n    texture: {\n      value: tex\n    },\n    textColor: {\n      type: 'v4',\n      value: new _ThreeShim2.default.Vector4()\n    },\n    clipRegion: {\n      type: 'v4',\n      value: new _ThreeShim2.default.Vector4(-16384, -16384, 16384, 16384)\n    }\n  };\n\n  // custom shader used for signed distance field rendering\n  var material = new _ThreeShim2.default.ShaderMaterial({\n    uniforms: uniforms,\n    vertexShader: vertexShader,\n    fragmentShader: fragmentShader,\n    side: _ThreeShim2.default.DoubleSide,\n    extensions: { derivatives: true }\n  });\n\n  material.premultipliedAlpha = true;\n  material.depthWrite = false;\n  material.transparent = true;\n\n  // iterate through the fontdata creating the necessary look up tables\n  function initFontData(data) {\n    data.CharMap = [];\n    data.MaxAscent = 0;\n    data.MaxDescent = 0;\n    for (var g in data.Glyphs) {\n      var glyph = data.Glyphs[g];\n      data.CharMap[glyph.CharCode] = glyph;\n      var ascent = glyph.BearingY;\n      var descent = glyph.Height - glyph.BearingY;\n      if (ascent > data.MaxAscent) {\n        data.MaxAscent = ascent;\n      }\n      if (descent > data.MaxDescent) {\n        data.MaxDescent = descent;\n      }\n    }\n  }\n\n  function getDefaultFont() {\n    var font = {\n      CharMap: {},\n      NaturalWidth: _DefaultFont.DEFAULT_FONT_JSON.NaturalWidth,\n      NaturalHeight: _DefaultFont.DEFAULT_FONT_JSON.NaturalHeight,\n      FontHeight: _DefaultFont.DEFAULT_FONT_JSON.FontHeight,\n      MaxAscent: _DefaultFont.DEFAULT_FONT_JSON.MaxAscent,\n      MaxDescent: _DefaultFont.DEFAULT_FONT_JSON.MaxDescent\n    };\n    var glyphs = _DefaultFont.DEFAULT_FONT_JSON.Glyphs;\n    for (var i = glyphs.length; i--;) {\n      var glyph = glyphs[i];\n      var glyphData = {\n        X: glyph[1],\n        Y: glyph[2],\n        Width: glyph[3],\n        Height: glyph[4],\n        AdvanceX: glyph[5],\n        AdvanceY: glyph[6],\n        BearingX: glyph[7],\n        BearingY: glyph[8]\n      };\n      font.CharMap[glyph[0]] = glyphData;\n    }\n    return font;\n  }\n\n  var font = {\n    data: null,\n    material: material,\n    fallbacks: []\n  };\n\n  // If no fontName provided, use default and return immediately.\n  if (!fontName) {\n    font.data = getDefaultFont();\n    return font;\n  }\n\n  var fileLoader = loader || new _ThreeShim2.default.FileLoader();\n  return new Promise(function (resolve, reject) {\n    fileLoader.load(fontName, function (response) {\n      var data = JSON.parse(response);\n      initFontData(data);\n      font.data = data;\n      resolve(font);\n    });\n  });\n}\n\nfunction addFontFallback(fontObject, fallbackFontObject) {\n  fontObject.fallbacks.push(fallbackFontObject);\n}","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\n// Embed efigs.png (with base 64 encoding) and efigs.fnt (which was already JSON)\n/* eslint-disable */\n// prettier-ignore\nvar DEFAULT_FONT_TEXTURE = exports.DEFAULT_FONT_TEXTURE = 'data:image/png;base64,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';\n// prettier-ignore\nvar DEFAULT_FONT_JSON = exports.DEFAULT_FONT_JSON = {\n\tNaturalWidth: 8192,\n\tNaturalHeight: 3435,\n\tFontHeight: 307,\n\tMaxAscent: 314,\n\tMaxDescent: 130,\n\tWeights: [{\n\t\tAlphaCenterOffset: 0.0,\n\t\tColorCenterOffset: 0.0\n\t}, {\n\t\tAlphaCenterOffset: -0.025,\n\t\tColorCenterOffset: -0.025\n\t}, {\n\t\tAlphaCenterOffset: -0.0385,\n\t\tColorCenterOffset: -0.0385\n\t}, {\n\t\tAlphaCenterOffset: -0.05,\n\t\tColorCenterOffset: -0.05\n\t}],\n\tGlyphs: [[0, -1, -1, 0, 0, 0, 0, 0, 0], [1, -1, -1, 0, 0, 0, 0, 0, 0], [2, -1, -1, 0, 0, 0, 0, 0, 0], [3, -1, -1, 0, 0, 0, 0, 0, 0], [4, -1, -1, 0, 0, 0, 0, 0, 0], [5, -1, -1, 0, 0, 0, 0, 0, 0], [6, -1, -1, 0, 0, 0, 0, 0, 0], [7, -1, -1, 0, 0, 0, 0, 0, 0], [8, -1, -1, 0, 0, 0, 0, 0, 0], [9, -1, -1, 0, 0, 0, 0, 0, 0], [10, -1, -1, 0, 0, 0, 0, 0, 0], [11, -1, -1, 0, 0, 0, 0, 0, 0], [12, -1, -1, 0, 0, 0, 0, 0, 0], [13, 1365, 3220, 128, 128, 116, 253, -64, 64], [14, -1, -1, 0, 0, 0, 0, 0, 0], [15, -1, -1, 0, 0, 0, 0, 0, 0], [16, -1, -1, 0, 0, 0, 0, 0, 0], [17, -1, -1, 0, 0, 0, 0, 0, 0], [18, -1, -1, 0, 0, 0, 0, 0, 0], [19, -1, -1, 0, 0, 0, 0, 0, 0], [20, -1, -1, 0, 0, 0, 0, 0, 0], [21, -1, -1, 0, 0, 0, 0, 0, 0], [22, -1, -1, 0, 0, 0, 0, 0, 0], [23, -1, -1, 0, 0, 0, 0, 0, 0], [24, -1, -1, 0, 0, 0, 0, 0, 0], [25, -1, -1, 0, 0, 0, 0, 0, 0], [26, -1, -1, 0, 0, 0, 0, 0, 0], [27, -1, -1, 0, 0, 0, 0, 0, 0], [28, -1, -1, 0, 0, 0, 0, 0, 0], [29, -1, -1, 0, 0, 0, 0, 0, 0], [30, -1, -1, 0, 0, 0, 0, 0, 0], [31, -1, -1, 0, 0, 0, 0, 0, 0], [32, 1237, 3220, 128, 128, 119, 253, -64, 64], [33, 3410, 1438, 164, 317, 106, 253, -29, 250], [34, 6106, 2964, 203, 197, 121, 253, -41, 250], [35, 2278, 1756, 276, 314, 158, 253, -59, 250], [36, 6816, 752, 260, 327, 152, 253, -54, 257], [37, 4379, 752, 338, 333, 234, 253, -52, 259], [38, 3184, 1114, 300, 322, 192, 253, -54, 254], [39, 6656, 2964, 153, 197, 70, 253, -41, 250], [40, 1362, 0, 187, 380, 75, 253, -52, 274], [41, 1549, 0, 187, 380, 75, 253, -61, 274], [42, 4683, 2964, 238, 232, 127, 253, -56, 250], [43, 5471, 2693, 263, 263, 173, 253, -44, 215], [44, 6309, 2964, 174, 197, 72, 253, -54, 96], [45, 259, 3220, 204, 151, 98, 253, -53, 141], [46, 7774, 2964, 164, 164, 72, 253, -46, 97], [47, 4951, 752, 233, 333, 104, 253, -66, 256], [48, 3773, 1114, 275, 322, 173, 253, -51, 254], [49, 7387, 1756, 202, 314, 119, 253, -52, 250], [50, 7079, 1114, 253, 319, 151, 253, -52, 254], [51, 1418, 1114, 256, 323, 155, 253, -50, 254], [52, 3102, 1756, 272, 314, 158, 253, -56, 250], [53, 6824, 1114, 255, 319, 155, 253, -49, 250], [54, 6559, 1114, 265, 319, 161, 253, -51, 251], [55, 4936, 1756, 253, 314, 143, 253, -55, 250], [56, 4048, 1114, 264, 322, 162, 253, -51, 254], [57, 5300, 1114, 265, 320, 163, 253, -52, 254], [58, 810, 2964, 164, 256, 72, 253, -46, 189], [59, 6375, 2383, 174, 290, 72, 253, -54, 189], [60, 6549, 2383, 256, 280, 168, 253, -44, 219], [61, 5132, 2964, 263, 200, 175, 253, -44, 183], [62, 6805, 2383, 256, 280, 168, 253, -44, 219], [63, 4573, 1114, 249, 321, 148, 253, -51, 254], [64, 318, 1114, 319, 323, 215, 253, -52, 213], [65, 4945, 1438, 309, 315, 187, 253, -61, 250], [66, 1724, 1756, 277, 314, 181, 253, -42, 250], [67, 3484, 1114, 289, 322, 181, 253, -53, 254], [68, 0, 1756, 296, 314, 200, 253, -42, 250], [69, 4681, 1756, 255, 314, 163, 253, -42, 250], [70, 5189, 1756, 250, 314, 153, 253, -42, 250], [71, 2884, 1114, 300, 322, 200, 253, -53, 254], [72, 880, 1756, 285, 314, 201, 253, -42, 250], [73, 7589, 1756, 156, 314, 72, 253, -42, 250], [74, 1146, 1438, 233, 318, 132, 253, -60, 250], [75, 1165, 1756, 280, 314, 179, 253, -41, 250], [76, 5935, 1756, 246, 314, 141, 253, -42, 250], [77, 7199, 1438, 328, 314, 240, 253, -44, 250], [78, 296, 1756, 292, 314, 208, 253, -42, 250], [79, 1915, 1114, 325, 322, 219, 253, -53, 254], [80, 3374, 1756, 263, 314, 166, 253, -42, 250], [81, 0, 1438, 333, 318, 218, 253, -53, 254], [82, 5536, 1438, 271, 315, 172, 253, -42, 250], [83, 4312, 1114, 261, 322, 156, 253, -52, 254], [84, 1445, 1756, 279, 314, 159, 253, -60, 250], [85, 620, 1438, 284, 318, 200, 253, -42, 250], [86, 7527, 1438, 300, 314, 182, 253, -59, 250], [87, 6065, 1438, 384, 314, 265, 253, -59, 250], [88, 7827, 1438, 297, 314, 175, 253, -61, 250], [89, 588, 1756, 292, 314, 174, 253, -59, 250], [90, 2828, 1756, 274, 314, 167, 253, -53, 250], [91, 2445, 0, 178, 379, 83, 253, -39, 273], [92, 4717, 752, 234, 333, 103, 253, -65, 256], [93, 2623, 0, 178, 379, 83, 253, -56, 273], [94, 3559, 2964, 257, 244, 169, 253, -44, 256], [95, 853, 3220, 256, 143, 128, 253, -64, 44], [96, 7245, 2964, 183, 170, 65, 253, -67, 245], [97, 7654, 2693, 244, 257, 145, 253, -53, 190], [98, 898, 1114, 260, 323, 161, 253, -47, 255], [99, 7185, 2693, 239, 259, 132, 253, -53, 191], [100, 637, 1114, 261, 323, 161, 253, -53, 255], [101, 6937, 2693, 248, 259, 142, 253, -53, 191], [102, 1379, 1438, 213, 318, 87, 253, -60, 254], [103, 5565, 1114, 260, 320, 160, 253, -51, 191], [104, 6071, 1114, 244, 320, 150, 253, -47, 255], [105, 7986, 2070, 162, 311, 64, 253, -49, 247], [106, 3577, 0, 190, 376, 65, 253, -77, 247], [107, 6315, 1114, 244, 320, 135, 253, -47, 255], [108, 7761, 1114, 155, 319, 65, 253, -45, 255], [109, 0, 2964, 324, 256, 230, 253, -47, 191], [110, 324, 2964, 244, 256, 150, 253, -47, 191], [111, 6676, 2693, 261, 259, 155, 253, -53, 191], [112, 2486, 1438, 260, 317, 161, 253, -47, 191], [113, 2225, 1438, 261, 317, 161, 253, -53, 191], [114, 974, 2964, 204, 255, 98, 253, -47, 191], [115, 7424, 2693, 230, 258, 123, 253, -54, 191], [116, 6163, 2383, 212, 295, 95, 253, -59, 227], [117, 568, 2964, 242, 256, 147, 253, -47, 188], [118, 1994, 2964, 255, 251, 133, 253, -61, 187], [119, 1413, 2964, 325, 251, 203, 253, -61, 187], [120, 1738, 2964, 256, 251, 134, 253, -61, 187], [121, 774, 2070, 255, 313, 133, 253, -61, 187], [122, 1178, 2964, 235, 252, 119, 253, -57, 187], [123, 2245, 0, 200, 379, 92, 253, -54, 273], [124, 3314, 752, 146, 354, 68, 253, -39, 272], [125, 2045, 0, 200, 379, 92, 253, -54, 273], [126, 6995, 2964, 250, 172, 167, 253, -41, 165], [127, -1, -1, 0, 0, 0, 0, 0, 0], [128, -1, -1, 0, 0, 0, 0, 0, 0], [129, -1, -1, 0, 0, 0, 0, 0, 0], [130, -1, -1, 0, 0, 0, 0, 0, 0], [131, -1, -1, 0, 0, 0, 0, 0, 0], [132, -1, -1, 0, 0, 0, 0, 0, 0], [133, -1, -1, 0, 0, 0, 0, 0, 0], [134, -1, -1, 0, 0, 0, 0, 0, 0], [135, -1, -1, 0, 0, 0, 0, 0, 0], [136, -1, -1, 0, 0, 0, 0, 0, 0], [137, -1, -1, 0, 0, 0, 0, 0, 0], [138, -1, -1, 0, 0, 0, 0, 0, 0], [139, -1, -1, 0, 0, 0, 0, 0, 0], [140, -1, -1, 0, 0, 0, 0, 0, 0], [141, -1, -1, 0, 0, 0, 0, 0, 0], [142, -1, -1, 0, 0, 0, 0, 0, 0], [143, -1, -1, 0, 0, 0, 0, 0, 0], [144, -1, -1, 0, 0, 0, 0, 0, 0], [145, -1, -1, 0, 0, 0, 0, 0, 0], [146, -1, -1, 0, 0, 0, 0, 0, 0], [147, -1, -1, 0, 0, 0, 0, 0, 0], [148, -1, -1, 0, 0, 0, 0, 0, 0], [149, -1, -1, 0, 0, 0, 0, 0, 0], [150, -1, -1, 0, 0, 0, 0, 0, 0], [151, -1, -1, 0, 0, 0, 0, 0, 0], [152, -1, -1, 0, 0, 0, 0, 0, 0], [153, -1, -1, 0, 0, 0, 0, 0, 0], [154, -1, -1, 0, 0, 0, 0, 0, 0], [155, -1, -1, 0, 0, 0, 0, 0, 0], [156, -1, -1, 0, 0, 0, 0, 0, 0], [157, -1, -1, 0, 0, 0, 0, 0, 0], [158, -1, -1, 0, 0, 0, 0, 0, 0], [159, -1, -1, 0, 0, 0, 0, 0, 0], [160, 1109, 3220, 128, 128, 119, 253, -64, 64], [161, 3246, 1438, 164, 317, 106, 253, -29, 191], [162, 7148, 1756, 239, 314, 134, 253, -53, 250], [163, 2746, 1438, 256, 317, 147, 253, -57, 253], [164, 5734, 2693, 263, 262, 147, 253, -58, 224], [165, 5254, 1438, 282, 315, 154, 253, -64, 250], [166, 3168, 752, 146, 354, 68, 253, -39, 272], [167, 3460, 752, 237, 349, 153, 253, -42, 254], [168, 7938, 2964, 216, 160, 65, 253, -76, 240], [169, 2240, 1114, 322, 322, 210, 253, -54, 254], [170, 3137, 2964, 210, 249, 99, 253, -57, 254], [171, 4264, 2964, 239, 242, 146, 253, -49, 183], [172, 5395, 2964, 263, 199, 175, 253, -44, 170], [173, 463, 3220, 190, 149, 82, 257, -54, 143], [174, 2562, 1114, 322, 322, 210, 253, -54, 254], [175, 653, 3220, 200, 145, 65, 253, -68, 229], [176, 4921, 2964, 211, 211, 105, 253, -53, 254], [177, 675, 2693, 263, 268, 173, 253, -44, 215], [178, 4055, 2964, 209, 243, 99, 253, -55, 291], [179, 3347, 2964, 212, 245, 102, 253, -55, 291], [180, 7428, 2964, 182, 170, 65, 253, -49, 245], [181, 7574, 752, 236, 327, 152, 257, -42, 201], [182, 0, 2070, 260, 313, 162, 253, -44, 187], [183, 7610, 2964, 164, 164, 72, 253, -46, 161], [184, 6809, 2964, 186, 186, 65, 253, -58, 64], [185, 4503, 2964, 180, 240, 88, 253, -53, 288], [186, 2916, 2964, 221, 249, 107, 253, -57, 254], [187, 3816, 2964, 239, 243, 146, 253, -44, 183], [188, 5550, 752, 350, 331, 236, 253, -53, 258], [189, 5900, 752, 349, 331, 240, 253, -53, 258], [190, 5184, 752, 366, 331, 251, 253, -55, 258], [191, 4822, 1114, 248, 321, 148, 253, -50, 191], [192, 545, 385, 309, 366, 187, 253, -61, 301], [193, 854, 385, 309, 366, 187, 253, -61, 301], [194, 4354, 385, 309, 364, 187, 253, -61, 299], [195, 650, 752, 309, 361, 187, 253, -61, 296], [196, 7460, 385, 309, 362, 187, 253, -61, 297], [197, 1736, 0, 309, 379, 187, 253, -61, 314], [198, 6449, 1438, 376, 314, 266, 253, -61, 250], [199, 2801, 0, 289, 376, 181, 253, -53, 254], [200, 3150, 385, 255, 365, 163, 253, -42, 301], [201, 3405, 385, 255, 365, 163, 253, -42, 301], [202, 6950, 385, 255, 363, 163, 253, -42, 299], [203, 1560, 752, 255, 361, 163, 253, -42, 297], [204, 3845, 385, 184, 365, 72, 253, -70, 301], [205, 3660, 385, 185, 365, 72, 253, -42, 301], [206, 5526, 385, 212, 364, 72, 253, -70, 299], [207, 274, 752, 216, 362, 72, 253, -72, 297], [208, 4633, 1438, 312, 315, 200, 253, -58, 250], [209, 1268, 752, 292, 361, 208, 253, -42, 296], [210, 6333, 0, 325, 369, 219, 253, -53, 301], [211, 6008, 0, 325, 369, 219, 253, -53, 301], [212, 7510, 0, 325, 367, 219, 253, -53, 299], [213, 4029, 385, 325, 364, 219, 253, -53, 296], [214, 1692, 385, 325, 365, 219, 253, -53, 297], [215, 2403, 2964, 250, 250, 165, 253, -42, 209], [216, 6249, 752, 325, 331, 219, 253, -53, 259], [217, 6658, 0, 284, 369, 200, 253, -42, 301], [218, 6942, 0, 284, 369, 200, 253, -42, 301], [219, 0, 385, 284, 367, 200, 253, -42, 299], [220, 2601, 385, 284, 365, 200, 253, -42, 297], [221, 2017, 385, 292, 365, 174, 253, -59, 301], [222, 5807, 1438, 258, 315, 162, 253, -42, 250], [223, 1158, 1114, 260, 323, 158, 253, -46, 256], [224, 2258, 2070, 244, 312, 145, 253, -53, 245], [225, 2014, 2070, 244, 312, 145, 253, -53, 245], [226, 1852, 2383, 244, 309, 145, 253, -53, 242], [227, 4554, 2383, 244, 306, 145, 253, -53, 239], [228, 4075, 2383, 244, 307, 145, 253, -53, 240], [229, 3002, 1438, 244, 317, 145, 253, -53, 250], [230, 6345, 2693, 331, 259, 225, 253, -53, 191], [231, 1029, 2070, 239, 313, 132, 253, -53, 191], [232, 5687, 1756, 248, 314, 142, 253, -53, 246], [233, 5439, 1756, 248, 314, 142, 253, -53, 246], [234, 509, 2383, 248, 310, 142, 253, -53, 242], [235, 2587, 2383, 248, 308, 142, 253, -53, 240], [236, 1482, 2383, 185, 310, 64, 253, -76, 246], [237, 1667, 2383, 185, 310, 64, 253, -45, 246], [238, 5012, 2383, 212, 306, 64, 253, -74, 242], [239, 5459, 2383, 216, 305, 64, 253, -76, 240], [240, 7810, 752, 262, 325, 156, 253, -53, 257], [241, 5675, 2383, 244, 304, 150, 253, -47, 239], [242, 3898, 1756, 261, 314, 155, 253, -53, 246], [243, 3637, 1756, 261, 314, 155, 253, -53, 246], [244, 0, 2383, 261, 310, 155, 253, -53, 242], [245, 3321, 2383, 261, 307, 155, 253, -53, 239], [246, 2326, 2383, 261, 308, 155, 253, -53, 240], [247, 2653, 2964, 263, 249, 175, 253, -44, 208], [248, 938, 2693, 263, 267, 155, 253, -54, 195], [249, 6423, 1756, 242, 314, 147, 253, -47, 246], [250, 6665, 1756, 242, 314, 147, 253, -47, 246], [251, 1001, 2383, 242, 310, 147, 253, -47, 242], [252, 3079, 2383, 242, 308, 147, 253, -47, 240], [253, 4046, 0, 255, 371, 133, 253, -61, 245], [254, 823, 0, 260, 382, 161, 253, -47, 256], [255, 1437, 385, 255, 366, 133, 253, -61, 240], [257, 5919, 2383, 244, 296, 145, 253, -53, 229], [258, 959, 752, 309, 361, 187, 253, -61, 296], [259, 2835, 2383, 244, 308, 145, 253, -53, 241], [260, 4301, 0, 309, 370, 187, 253, -61, 250], [261, 757, 2383, 244, 310, 145, 253, -53, 190], [262, 4610, 0, 289, 370, 181, 253, -53, 302], [263, 6907, 1756, 241, 314, 132, 253, -53, 246], [268, 7835, 0, 289, 367, 181, 253, -53, 299], [269, 1243, 2383, 239, 310, 132, 253, -53, 242], [270, 6101, 385, 296, 363, 200, 253, -42, 299], [271, 0, 1114, 318, 324, 161, 253, -53, 256], [280, 4899, 0, 263, 370, 163, 253, -42, 250], [281, 3582, 2383, 249, 307, 142, 253, -53, 191], [282, 7205, 385, 255, 363, 163, 253, -42, 299], [283, 261, 2383, 248, 310, 142, 253, -53, 242], [286, 4663, 385, 300, 364, 200, 253, -53, 296], [287, 5423, 0, 260, 370, 160, 253, -51, 241], [304, 490, 752, 160, 362, 72, 253, -44, 297], [305, 2249, 2964, 154, 251, 64, 253, -45, 187], [306, 333, 1438, 287, 318, 204, 253, -42, 250], [307, 3351, 0, 226, 376, 129, 253, -49, 247], [321, 4159, 1756, 261, 314, 141, 253, -57, 250], [322, 7570, 1114, 191, 319, 66, 253, -63, 255], [323, 2309, 385, 292, 365, 208, 253, -42, 301], [324, 6348, 2070, 244, 311, 150, 253, -47, 246], [327, 4963, 385, 292, 364, 208, 253, -42, 299], [328, 3831, 2383, 244, 307, 150, 253, -47, 242], [336, 5683, 0, 325, 369, 219, 253, -53, 301], [337, 4420, 1756, 261, 314, 155, 253, -53, 246], [338, 6825, 1438, 374, 314, 277, 253, -48, 250], [339, 5997, 2693, 348, 259, 241, 253, -53, 191], [344, 5255, 385, 271, 364, 172, 253, -42, 299], [345, 4798, 2383, 214, 306, 98, 253, -57, 242], [346, 5162, 0, 261, 370, 156, 253, -52, 302], [347, 1498, 2070, 230, 313, 123, 253, -54, 246], [350, 3090, 0, 261, 376, 156, 253, -52, 254], [351, 1268, 2070, 230, 313, 123, 253, -54, 191], [352, 284, 385, 261, 367, 156, 253, -52, 299], [353, 2096, 2383, 230, 309, 123, 253, -54, 242], [354, 3767, 0, 279, 372, 159, 253, -60, 250], [355, 3697, 752, 212, 349, 95, 253, -59, 227], [356, 6397, 385, 279, 363, 159, 253, -60, 299], [357, 5825, 1114, 246, 320, 95, 253, -59, 252], [366, 539, 0, 284, 382, 200, 253, -42, 314], [367, 904, 1438, 242, 318, 147, 253, -47, 250], [368, 7226, 0, 284, 369, 200, 253, -42, 301], [369, 6181, 1756, 242, 314, 147, 253, -47, 246], [376, 7769, 385, 292, 362, 174, 253, -59, 297], [377, 1163, 385, 274, 366, 167, 253, -53, 302], [378, 7306, 2070, 235, 311, 119, 253, -57, 246], [379, 0, 752, 274, 362, 167, 253, -53, 297], [380, 5224, 2383, 235, 305, 119, 253, -57, 240], [381, 6676, 385, 274, 363, 167, 253, -53, 299], [382, 4319, 2383, 235, 307, 119, 253, -57, 242], [536, 278, 0, 261, 384, 156, 253, -52, 254], [537, 5070, 1114, 230, 321, 123, 253, -54, 191], [538, 1083, 0, 279, 380, 159, 253, -60, 250], [539, 2956, 752, 212, 357, 95, 253, -59, 227], [1025, 2734, 752, 222, 358, 135, 257, -39, 294], [1040, 1728, 2070, 286, 312, 156, 257, -65, 248], [1041, 7068, 2070, 238, 311, 148, 257, -39, 247], [1042, 6100, 2070, 248, 311, 159, 257, -39, 247], [1043, 7541, 2070, 223, 311, 126, 257, -39, 247], [1044, 2170, 752, 287, 359, 166, 257, -62, 247], [1045, 7764, 2070, 222, 311, 135, 257, -39, 247], [1046, 2502, 2070, 338, 311, 209, 257, -64, 247], [1047, 4388, 1438, 245, 316, 140, 257, -55, 249], [1048, 4313, 2070, 265, 311, 187, 257, -39, 247], [1049, 2885, 385, 265, 365, 187, 257, -39, 301], [1050, 5346, 2070, 252, 311, 148, 257, -39, 247], [1051, 2554, 1756, 274, 314, 171, 257, -64, 247], [1052, 3173, 2070, 301, 311, 223, 257, -39, 247], [1053, 4578, 2070, 258, 311, 180, 257, -39, 247], [1054, 1939, 1438, 286, 317, 190, 257, -48, 250], [1055, 4836, 2070, 255, 311, 177, 257, -39, 247], [1056, 6830, 2070, 238, 311, 148, 257, -39, 247], [1057, 3872, 1438, 259, 316, 154, 257, -48, 249], [1058, 5091, 2070, 255, 311, 133, 257, -61, 247], [1059, 2001, 1756, 277, 314, 150, 257, -62, 247], [1060, 3574, 1438, 298, 316, 196, 257, -51, 249], [1061, 4043, 2070, 270, 311, 140, 257, -65, 247], [1062, 2457, 752, 277, 359, 179, 257, -39, 247], [1063, 5849, 2070, 251, 311, 169, 257, -43, 247], [1064, 2840, 2070, 333, 311, 255, 257, -39, 247], [1065, 1815, 752, 355, 359, 255, 257, -39, 247], [1066, 3763, 2070, 280, 311, 168, 257, -61, 247], [1067, 3474, 2070, 289, 311, 211, 257, -39, 247], [1068, 6592, 2070, 238, 311, 148, 257, -39, 247], [1069, 4131, 1438, 257, 316, 152, 257, -57, 249], [1070, 1592, 1438, 347, 317, 260, 257, -39, 250], [1071, 5598, 2070, 251, 311, 151, 257, -61, 247], [1072, 7846, 2383, 232, 271, 136, 257, -52, 204], [1073, 7329, 752, 245, 327, 146, 257, -49, 260], [1074, 3858, 2693, 237, 265, 145, 257, -42, 201], [1075, 5268, 2693, 203, 265, 102, 257, -42, 201], [1076, 260, 2070, 258, 313, 140, 257, -59, 201], [1077, 7608, 2383, 238, 271, 137, 257, -50, 204], [1078, 1445, 2693, 312, 265, 184, 257, -64, 201], [1079, 0, 2693, 226, 271, 118, 257, -56, 204], [1080, 3379, 2693, 241, 265, 157, 257, -42, 201], [1081, 1674, 1114, 241, 323, 157, 257, -42, 259], [1082, 4805, 2693, 232, 265, 126, 257, -42, 201], [1083, 1201, 2693, 244, 267, 140, 257, -62, 201], [1084, 2623, 2693, 268, 265, 184, 257, -42, 201], [1085, 3138, 2693, 241, 265, 157, 257, -42, 201], [1086, 7360, 2383, 248, 271, 148, 257, -50, 204], [1087, 4569, 2693, 236, 265, 152, 257, -42, 201], [1088, 6574, 752, 242, 330, 150, 257, -42, 204], [1089, 451, 2693, 224, 271, 119, 257, -50, 204], [1090, 5037, 2693, 231, 265, 113, 257, -59, 201], [1091, 7076, 752, 253, 327, 125, 257, -64, 201], [1092, 0, 0, 278, 385, 178, 257, -50, 259], [1093, 2891, 2693, 247, 265, 128, 257, -60, 201], [1094, 518, 2070, 256, 313, 154, 257, -42, 201], [1095, 4095, 2693, 237, 265, 150, 257, -45, 201], [1096, 1757, 2693, 307, 265, 223, 257, -42, 201], [1097, 7745, 1756, 327, 313, 225, 257, -42, 201], [1098, 2064, 2693, 283, 265, 174, 257, -59, 201], [1099, 2347, 2693, 276, 265, 192, 257, -42, 201], [1100, 4332, 2693, 237, 265, 145, 257, -42, 201], [1101, 226, 2693, 225, 271, 118, 257, -57, 204], [1102, 7061, 2383, 299, 271, 207, 257, -42, 204], [1103, 3620, 2693, 238, 265, 136, 257, -60, 201], [1105, 7332, 1114, 238, 319, 137, 257, -50, 252], [7843, 4147, 752, 232, 341, 136, 257, -52, 274], [7867, 3909, 752, 238, 341, 137, 257, -50, 274], [8211, 0, 3220, 259, 151, 153, 253, -53, 141], [8217, 6483, 2964, 173, 197, 73, 253, -53, 250], [8220, 5882, 2964, 224, 197, 124, 253, -47, 251], [8222, 5658, 2964, 224, 197, 122, 253, -54, 96], [65533, 5738, 385, 363, 363, 256, 257, -54, 259]]\n};","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _StereoTextureUniforms = require('./StereoTextureUniforms');\n\nvar _StereoTextureUniforms2 = _interopRequireDefault(_StereoTextureUniforms);\n\nvar _StereoShaderLib = require('./StereoShaderLib');\n\nvar _StereoShaderLib2 = _interopRequireDefault(_StereoShaderLib);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Basic Material support rendering mono/stereo textures\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @constructor\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @param {Object} parameters - parameters for THREE.Material\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar DEFAULT_UNIFORM_COLOR = new _ThreeShim2.default.Color();\nvar DEFAULT_OFFSET_REPEATS = [new _ThreeShim2.default.Vector4(0, 0, 1, 1)];\n\nvar StereoBasicTextureMaterial = function (_THREE$ShaderMaterial) {\n  _inherits(StereoBasicTextureMaterial, _THREE$ShaderMaterial);\n\n  function StereoBasicTextureMaterial(parameters) {\n    _classCallCheck(this, StereoBasicTextureMaterial);\n\n    var uniforms = _ThreeShim2.default.UniformsUtils.merge([new _StereoTextureUniforms2.default(), {\n      color: { value: DEFAULT_UNIFORM_COLOR, type: 'f' }, // The color of material\n      opacity: { value: 1.0, type: 'f' }, // The opacity of material\n      useUV: { value: 1.0, type: 'f' }, // The opacity of material\n      map: { value: null, type: 't' }, // The color map of material\n      envMap: { value: null, type: 't' } // The environment map of material\n    }]);\n\n    var _this = _possibleConstructorReturn(this, (StereoBasicTextureMaterial.__proto__ || Object.getPrototypeOf(StereoBasicTextureMaterial)).call(this, {\n      uniforms: uniforms,\n      vertexShader: _StereoShaderLib2.default.stereo_basic_vert,\n      fragmentShader: _StereoShaderLib2.default.stereo_basic_frag\n    }));\n\n    _this.isStereoBasicTextureMaterial = true;\n    // The offset repeats of each eye, this makes each eye use different uv to get stereo rendering output\n    _this.stereoOffsetRepeats = DEFAULT_OFFSET_REPEATS;\n    _this.setValues(parameters);\n    return _this;\n  }\n\n  _createClass(StereoBasicTextureMaterial, [{\n    key: 'copy',\n    value: function copy(source) {\n      _get(StereoBasicTextureMaterial.prototype.__proto__ || Object.getPrototypeOf(StereoBasicTextureMaterial.prototype), 'copy', this).call(this, source);\n      this.stereoOffsetRepeats = source.stereoOffsetRepeats.slice();\n      return this;\n    }\n  }, {\n    key: 'color',\n    set: function set(value) {\n      this.uniforms.color.value = new _ThreeShim2.default.Color(value);\n    },\n    get: function get() {\n      return this.uniforms.color.value;\n    }\n  }, {\n    key: 'opacity',\n    set: function set(value) {\n      this.uniforms && (this.uniforms.opacity.value = value);\n    },\n    get: function get() {\n      return this.uniforms.opacity.value;\n    }\n  }, {\n    key: 'map',\n    set: function set(value) {\n      this.uniforms.map.value = value;\n    },\n    get: function get() {\n      return this.uniforms.map.value;\n    }\n  }, {\n    key: 'envMap',\n    set: function set(value) {\n      this.uniforms.envMap.value = value;\n    },\n    get: function get() {\n      return this.uniforms.envMap.value;\n    }\n  }, {\n    key: 'useUV',\n    set: function set(value) {\n      this.uniforms.useUV.value = value;\n    }\n  }]);\n\n  return StereoBasicTextureMaterial;\n}(_ThreeShim2.default.ShaderMaterial);\n\nexports.default = StereoBasicTextureMaterial;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /**\n                                                                                                                                                           * Dynamic uniforms for rendering stereo texture.\n                                                                                                                                                           *\n                                                                                                                                                           * Callback function onUpdateCallback will be called in every render loop before\n                                                                                                                                                           * setting the value of the uniform to WebGL. To enable stereo texture, you\n                                                                                                                                                           * should set viewID=1 for the right eye camera. If you set two stereoOffsetRepeats\n                                                                                                                                                           * to the material, the right eye camera will use the second stereoOffsetRepeat\n                                                                                                                                                           */\n\nvar StereoTextureUniforms = function StereoTextureUniforms() {\n  _classCallCheck(this, StereoTextureUniforms);\n\n  /** The right eye camera will use stereoOffsetRepeats[1] if it's defined. */\n  this.stereoOffsetRepeat = {\n    type: 'f',\n    value: new _ThreeShim2.default.Vector4(0, 0, 1, 1)\n  };\n};\n\nexports.default = StereoTextureUniforms;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * Shader library for rendering stereo textures\n *\n * Part of this code is source from meshbasic_vert.glsl and meshbasic_frag.glsl\n * of Three.js\n * https://github.com/mrdoob/three.js/\n */\n\nvar StereoShaderLib = {\n  stereo_basic_vert: \"\\n      uniform vec4 stereoOffsetRepeat;\\n      varying highp vec3 vPosition;\\n      #ifndef USE_ENVMAP\\n      varying highp vec2 vUv;\\n      #endif\\n      void main()\\n      {\\n          vPosition = position;\\n          #ifndef USE_ENVMAP\\n          vUv = uv * stereoOffsetRepeat.zw + stereoOffsetRepeat.xy;\\n          #endif\\n          gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n      }\\n  \",\n\n  stereo_basic_frag: \"\\n      #define RECIPROCAL_PI2 0.15915494\\n      #define RECIPROCAL_PI 0.31830988\\n      uniform vec4 stereoOffsetRepeat;\\n      uniform vec3 color;\\n      uniform float opacity;\\n      uniform float useUV;\\n      #ifdef ENVMAP_TYPE_CUBE\\n      uniform samplerCube envMap;\\n      #else\\n      uniform sampler2D map;\\n      varying highp vec2 vUv;\\n      #endif\\n      varying highp vec3 vPosition;\\n      void main()\\n      {\\n        vec4 diffuseColor = vec4( 1.0, 1.0, 1.0, opacity );\\n\\n        #ifdef ENVMAP_TYPE_CUBE\\n        vec4 texColor = textureCube( envMap, vec3( vPosition.z, vPosition.yx ) );\\n        #else\\n        vec2 sampleUV;\\n        if (useUV > 0.0) {\\n          sampleUV = vUv;\\n        } else {\\n          vec3 nrm = normalize(vPosition);\\n          sampleUV.y = asin(nrm.y) * RECIPROCAL_PI + 0.5;\\n          sampleUV.x = -atan( nrm.z, nrm.x ) * RECIPROCAL_PI2 + 0.5;\\n          sampleUV = sampleUV * stereoOffsetRepeat.zw + stereoOffsetRepeat.xy;\\n        }\\n        vec4 texColor = texture2D( map, sampleUV );\\n        #endif\\n        diffuseColor *= texColor;\\n        diffuseColor.rgb *= color;\\n\\n        gl_FragColor = diffuseColor;\\n      }\\n  \"\n};\n\nexports.default = StereoShaderLib;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n/*\n * GuiSys is a container and manager for the UI scene under a common Object3D guiRoot.\n * The objects role is to manage the interactions and distribute events to any listeners\n * this is handled by calling `frame` from a browser requestAnimationFrame event.\n *\n * GuiSys also manages the font which is intiialized separately and while a single font\n * is currently defined there is the feasiblity to add support more.\n *\n * GuiSys will also propagate the Opactiy of a UI element up the transform hierarchy,\n * this is the only 'style' that is propagated but it's addition allows a hierarchy of\n * UI elements to by faded in or out based on a root.\n *\n * The sorting of the view elements is customized and handled in frame through the use\n * of the `renderOrder` attribute on the Three.js Object3D. Any object marked as a renderGroup\n * is sorted at a new depth location otherwise objects use their closest parents depth.\n * Order of rendering for objects at the same computed depth is based on pre-traversal order\n */\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _SDFFont = require('../SDFFont/SDFFont');\n\nvar _GuiSysEvent = require('./GuiSysEvent');\n\nvar _GamepadEventInput = require('../Inputs/GamepadEventInput');\n\nvar _GamepadEventInput2 = _interopRequireDefault(_GamepadEventInput);\n\nvar _KeyboardEventInput = require('../Inputs/KeyboardEventInput');\n\nvar _KeyboardEventInput2 = _interopRequireDefault(_KeyboardEventInput);\n\nvar _MouseEventInput = require('../Inputs/MouseEventInput');\n\nvar _MouseEventInput2 = _interopRequireDefault(_MouseEventInput);\n\nvar _TouchEventInput = require('../Inputs/TouchEventInput');\n\nvar _TouchEventInput2 = _interopRequireDefault(_TouchEventInput);\n\nvar _MouseRayCaster = require('../Inputs/MouseRayCaster');\n\nvar _MouseRayCaster2 = _interopRequireDefault(_MouseRayCaster);\n\nvar _UIViewUtil = require('./UIViewUtil');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_Z_OFFSET_SCALE = 0.001;\nvar DEFAULT_CURSOR_DISTANCE = 2.0;\nvar DEFAULT_CURSOR_WIDTH = 0.025;\nvar RENDERSORT_DISTANCE_MULTIPLIER = 64;\nvar RENDERSORT_DISTANCE_SHIFT = 9;\nvar DEFAULT_TOUCH_RELEASE_DELAY = 300;\n\nvar frameUpdateUID = 0;\n\n// Preallocate, to avoid rebuilding each frame\nvar raycaster = new _ThreeShim2.default.Raycaster();\n\nfunction matrixDistance(matrixA, matrixB) {\n  var x = matrixA.elements[12] - matrixB.elements[12];\n  var y = matrixA.elements[13] - matrixB.elements[13];\n  var z = matrixA.elements[14] - matrixB.elements[14];\n  return Math.sqrt(x * x + y * x + z * z);\n}\n\nfunction _applyUpdates(node, currentOpacity, updateContext, index, clipRect) {\n  // a render group is defined as a hierachy of node that are sorted on the same\n  // distance key. Children of a rendergroup node are also sorted on the same distance\n  // until another group is found\n  // within each ground each node is rendered in pre-order\n  if (node.renderGroup) {\n    // calculate the distance from the camera to origin to node origin\n    var dist = matrixDistance(node.matrixWorld, updateContext.camera.matrixWorld);\n    dist += node.zOffset || 0;\n    index = updateContext.renderOrder;\n    // UIViews always draw back to front due the potential of transparency within the background\n    if (node.type === 'UIView') {\n      dist = Math.max(0, updateContext.camera.far - dist);\n    }\n    // shift up the by 9 give 512 additional levels for each descretized depth\n    updateContext.distances[index] = Math.floor(dist * RENDERSORT_DISTANCE_MULTIPLIER) << RENDERSORT_DISTANCE_SHIFT;\n  }\n\n  updateContext.renderOrder++;\n  node.renderOrder = updateContext.distances[index] + updateContext.renderOrder;\n\n  if (node.type === 'UIView') {\n    var worldClipRect = node.calcWorldClipRect();\n    currentOpacity *= node.opacity;\n    node.setClipPlanes(clipRect);\n    node.applyUpdates(currentOpacity, updateContext);\n    clipRect = [Math.max(clipRect[0], worldClipRect[0]), Math.max(clipRect[1], worldClipRect[1]), Math.min(clipRect[2], worldClipRect[2]), Math.min(clipRect[3], worldClipRect[3])];\n  } else if (node.type === 'SDFText') {\n    node.textClip[0] = clipRect[0];\n    node.textClip[1] = clipRect[1];\n    node.textClip[2] = clipRect[2];\n    node.textClip[3] = clipRect[3];\n  }\n  for (var i in node.children) {\n    _applyUpdates(node.children[i], currentOpacity, updateContext, index, clipRect);\n  }\n}\n\nfunction updateBillboard(node, updateContext) {\n  if (node.type === 'UIView' && node.billboarding === 'on') {\n    node.updateBillboard(updateContext);\n  }\n  for (var i in node.children) {\n    updateBillboard(node.children[i], updateContext);\n  }\n}\n\nfunction intersectObject(object, raycaster, intersects) {\n  if (object.visible === false) {\n    return;\n  }\n  object.raycast(raycaster, intersects);\n  var children = object.children;\n  for (var i = 0, l = children.length; i < l; i++) {\n    intersectObject(children[i], raycaster, intersects);\n  }\n}\n\n/*\n * Creates a guiRoot as a child of the scene root passed in\n */\n\nvar GuiSys = function () {\n  function GuiSys(root) {\n    var _this = this;\n\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, GuiSys);\n\n    this.root = root;\n    this.guiRoot = new _ThreeShim2.default.Object3D();\n    this.root.add(this.guiRoot);\n    this.isVRPresenting = false;\n    this._requestFrames = {};\n    this._offscreenRenders = {};\n    this._offscreenRenderUID = 1;\n\n    this._cursor = {\n      intersectDistance: 0,\n      lastHit: null,\n      lastAlmostHit: null,\n      source: null,\n      rayOrigin: null,\n      rayDirection: null,\n      lastHitCache: [],\n      drawsCursor: false,\n      // Store the local coordinates on the last hit face\n      lastLocalX: null,\n      lastLocalY: null,\n      lastHitImmediateListeners: null\n    };\n    // This is a minimum z distance to prevent z-fighting in z-buffer.\n    // Todo: We may need to dynamically set this scale depends on the camera.\n    this.ZOffsetScale = DEFAULT_Z_OFFSET_SCALE;\n\n    // This is the position mouse input is pointing to in viewport\n    this.mouseOffset = null;\n\n    // This defines the styles for mouse cursor in diffrent mouse cursor state\n    this.mouseCursorInactiveStyle = 'default';\n    this.mouseCursorActiveStyle = 'pointer';\n    // This is the current mouse state\n    this.mouseCursorActive = false;\n\n    // When user touch leave screen, to keep touch interaction working smoothly,\n    // the hit offset should remain in the same place for a period of time before\n    // moving it back to gaze cursor.\n    this.touchReleaseDelay = DEFAULT_TOUCH_RELEASE_DELAY;\n\n    // Curosr display modes: 'visible'/'hidden' - cursor always/never visible.\n    // 'auto' - computed dynamically, visible when over an interactable object.\n    this.cursorVisibility = 'hidden';\n    // Move cursor on top of object underneath instead of using fixed distance.\n    this.cursorAutoDepth = true;\n    // Distance between camera and cursor; only used when auto-depth is false.\n    this.cursorFixedDistance = DEFAULT_CURSOR_DISTANCE;\n\n    // If no font specified, use default.\n    if (!params.font) {\n      params.font = (0, _SDFFont.loadFont)();\n    }\n\n    if (!params.raycasters) {\n      params.raycasters = [new _MouseRayCaster2.default()];\n    }\n\n    // Override default values. Can also call setter methods directly.\n    // example params: { 'cursorFixedDistance': 1.5 }\n    if (params !== undefined) {\n      (0, _UIViewUtil.setParams)(this, params);\n    }\n\n    // Event dispatcher to dispatch guisys events\n    this.eventDispatcher = new _ThreeShim2.default.EventDispatcher();\n\n    var touchEventInput = new _TouchEventInput2.default();\n    touchEventInput.setImmediateListener(function (event) {\n      return _this._onTouchImmediate(event);\n    });\n    this._inputEventSources = [new _KeyboardEventInput2.default(), new _MouseEventInput2.default(), touchEventInput, new _GamepadEventInput2.default()];\n\n    // Register to events.\n    window.addEventListener('vrdisplaypresentchange', this._onPresentChange.bind(this));\n  }\n\n  /**\n  * Add a Three.js object as a child of the guiRoot obejct\n  */\n\n\n  _createClass(GuiSys, [{\n    key: 'add',\n    value: function add(child, container) {\n      if (container) {\n        container.add(child);\n      } else {\n        this.guiRoot.add(child);\n      }\n    }\n\n    /**\n    * Remove a Three.js object as a child of the guiRoot object\n    * It is the job of the caller to handle deallocation of the object\n    */\n\n  }, {\n    key: 'remove',\n    value: function remove(child) {\n      if (child.parent) {\n        child.parent.remove(child);\n      }\n    }\n\n    /**\n    * request for a function to be run on the following frame of the GuiSys\n    * first argument for the function is Date.now() as is dependable across browsers\n    */\n\n  }, {\n    key: 'requestFrameFunction',\n    value: function requestFrameFunction(func) {\n      var uid = frameUpdateUID++;\n      this._requestFrames[uid] = func;\n      return uid;\n    }\n\n    /**\n    * cancel for the function associated with the uid\n    */\n\n  }, {\n    key: 'cancelFrameFunction',\n    value: function cancelFrameFunction(uid) {\n      delete this._requestFrames[uid];\n    }\n  }, {\n    key: 'applyUpdates',\n    value: function applyUpdates(camera, root) {\n      var updateContext = {\n        camera: camera,\n        renderOrder: 0,\n        distances: [Math.floor(camera.far * RENDERSORT_DISTANCE_MULTIPLIER) << RENDERSORT_DISTANCE_SHIFT],\n        distancesNode: [null]\n      };\n      // apply hierarchical updates of opacity and determine render order\n      _applyUpdates(root, 1, updateContext, 0, [-16384, -16384, 16384, 16384]);\n\n      // Update world transform matrix of all views, as local transform might have changed in applyUpdates.\n      root.updateMatrixWorld();\n\n      return updateContext;\n    }\n\n    /**\n    * Updates the reorder and propagates the Opacity through the view hierarchy\n    */\n\n  }, {\n    key: 'frameRenderUpdates',\n    value: function frameRenderUpdates(camera) {\n      var curTime = Date.now();\n      var currentRequests = this._requestFrames;\n      this._requestFrames = {};\n      for (var update in currentRequests) {\n        currentRequests[update](curTime);\n      }\n\n      for (var scene in this._offscreenRenders) {\n        var sceneParams = this._offscreenRenders[scene];\n        this.applyUpdates(sceneParams.camera, sceneParams.scene);\n      }\n      // apply hierarchical updates of opacity and determine render order\n      var updateContext = this.applyUpdates(camera, this.root);\n\n      // Update billboarding as second pass, so all view transform updates are applied first.\n      // Billboarding makes a view face the screen and has no effect in VR.\n      if (!this.isVRPresenting) {\n        updateBillboard(this.root, updateContext);\n      }\n\n      if (this._raycasters) {\n        for (var i = 0; i < this._raycasters.length; i++) {\n          if (typeof this._raycasters[i].frame === 'function') {\n            this._raycasters[i].frame(curTime);\n          }\n        }\n      }\n\n      // Check if we need to initialize the cursor.\n      if (this.cursorVisibility !== 'hidden' && !this.cursorMesh) {\n        this.addCursor();\n      }\n    }\n\n    /**\n    * `frameInputEvents` must be called on a requestAnimationFrame event based\n    * as this will handle the interactions of the browser devices and\n    * headset gaze with the UI elements. Events are created and distributed\n    * to any listeners\n    */\n\n  }, {\n    key: 'frameInputEvents',\n    value: function frameInputEvents(camera, renderer) {\n      if (this._raycasters) {\n        var caster = null;\n        var origin = null;\n        var direction = null;\n        var maxLength = Infinity;\n        // Loop through raycasters until we get a hit from a ray\n        // In future diffs, there will be support for multiple cursors and\n        // raycasters, but for now we pick the first available one.\n        var r = 0;\n        while ((!origin || !direction) && r < this._raycasters.length) {\n          caster = this._raycasters[r];\n          origin = caster.getRayOrigin(camera);\n          direction = caster.getRayDirection(camera);\n          if (typeof caster.getMaxLength === 'function') {\n            maxLength = caster.getMaxLength();\n          } else {\n            maxLength = Infinity;\n          }\n          r++;\n        }\n        if (origin && direction) {\n          var firstHit = null;\n          var firstAlmostHit = null;\n          var cameraPosition = camera.getWorldPosition();\n          raycaster.ray.origin.set(cameraPosition.x + origin[0], cameraPosition.y + origin[1], cameraPosition.z + origin[2]);\n          raycaster.ray.direction.fromArray(direction);\n          raycaster.ray.direction.normalize();\n          raycaster.ray.direction.applyQuaternion(camera.getWorldQuaternion());\n          raycaster.far = maxLength;\n          var rotatedDirection = [raycaster.ray.direction.x, raycaster.ray.direction.y, raycaster.ray.direction.z];\n          var hits = raycaster.intersectObject(this.root, true);\n          for (var i = 0; i < hits.length; i++) {\n            var hit = hits[i];\n            if (hit.uv && hit.object && hit.object.subScene) {\n              var distanceToSubscene = hit.distance;\n              var scene = hit.object.subScene;\n              raycaster.ray.origin.set(scene._rttWidth * hit.uv.x, scene._rttHeight * (1 - hit.uv.y), 0.1);\n              raycaster.ray.direction.set(0, 0, -1);\n              var subHits = [];\n              intersectObject(scene, raycaster, subHits);\n              if (subHits.length === 0) {\n                continue;\n              }\n              hit = subHits[subHits.length - 1];\n              hit.distance = distanceToSubscene;\n            }\n            if (!firstHit && !hit.isAlmostHit) {\n              firstHit = hit;\n            }\n            if (!firstAlmostHit && hit.isAlmostHit) {\n              firstAlmostHit = hit;\n            }\n          }\n\n          var source = caster.getType();\n          if (firstHit) {\n            this.updateLastHit(firstHit.object, source);\n            if (firstHit.uv) {\n              this._cursor.lastLocalX = firstHit.uv.x;\n              this._cursor.lastLocalY = firstHit.uv.y;\n            }\n            // Always update distance since object could be moving\n            this._cursor.intersectDistance = firstHit.distance;\n          } else {\n            this.updateLastHit(null, source);\n            this._cursor.lastLocalX = null;\n            this._cursor.lastLocalY = null;\n          }\n\n          if (this.cursorVisibility === 'auto') {\n            // Set lastAlmostHit if firstHit not found or isn't interactable.\n            // For example <Pano> generates a hit but usually isn't interactive.\n            if (firstAlmostHit && !(firstHit && firstHit.object.isInteractable)) {\n              this._cursor.lastAlmostHit = firstAlmostHit.object;\n              this._cursor.intersectDistance = firstAlmostHit.distance;\n            } else {\n              this._cursor.lastAlmostHit = null;\n            }\n          }\n\n          this._cursor.rayOrigin = origin;\n          this._cursor.rayDirection = rotatedDirection;\n          this._cursor.drawsCursor = caster.drawsCursor();\n        } else {\n          this._cursor.lastHit = null;\n          this._cursor.source = null;\n          this._cursor.drawsCursor = false;\n          this._cursor.rayOrigin = null;\n          this._cursor.rayDirection = null;\n        }\n      }\n\n      var renderTarget = renderer ? renderer.domElement : null;\n      this._domElement = renderTarget;\n      this._fireInputEvents(renderTarget);\n      this._updateMouseCursorStyle(renderTarget);\n    }\n\n    /**\n    * `frame` is a helper to call through to frameRenderUpdates and frameInputEvents\n    * in the correct order to update GuiSys\n    * the calls can be made seperately as required\n    */\n\n  }, {\n    key: 'frame',\n    value: function frame(camera, renderer) {\n      this.frameRenderUpdates(camera);\n      this.frameInputEvents(camera, renderer);\n      this.updateCursor(camera);\n    }\n\n    /**\n    * updates the last hit object and the hierarchy of views\n    * creates inetraction events that are then distributed to listeners of GuiSys\n    */\n\n  }, {\n    key: 'updateLastHit',\n    value: function updateLastHit(hit, source) {\n      var hitCache = [];\n      var hitImmediateListeners = [];\n      var currentHit = hit;\n\n      // First pass of hit views in hierachy\n      var hitViews = [];\n      while (currentHit) {\n        if (currentHit.type === 'UIView') {\n          hitViews.push(currentHit);\n        }\n        currentHit = currentHit.parent;\n      }\n      // Determine the target of hit event\n      // Save those view that accept hit event to hitCache\n      var target = null;\n      this.mouseCursorActive = false;\n      for (var i = hitViews.length - 1; i >= 0; i--) {\n        // hitViews are all UIViews so shouldAcceptHitEvent/shouldInterceptHitEvent\n        // is never null. Here shouldAcceptHitEvent determine whether this view can\n        // be the target of hit event\n        if (hitViews[i].shouldAcceptHitEvent()) {\n          target = hitViews[i].id;\n          hitCache[hitViews[i].id] = hitViews[i];\n          if (hitViews[i].immediateListener) {\n            hitImmediateListeners.push(hitViews[i].immediateListener);\n          }\n          if (hitViews[i].isMouseInteractable) {\n            // If any view that accept hit event is mouse interactable\n            // the mouse cursor state should be active.\n            this.mouseCursorActive = true;\n          }\n        }\n        // Here shouldInterceptHitEvent determine whether this view's subviews can be\n        // the target of hit event\n        if (hitViews[i].shouldInterceptHitEvent()) {\n          break;\n        }\n      }\n\n      // Update last hit\n      currentHit = target !== null && hitCache[target] ? hitCache[target] : null;\n      if (this._cursor.lastHit !== currentHit || this._cursor.source !== source) {\n        // Emit hit changed event\n        this.eventDispatcher.dispatchEvent(new _GuiSysEvent.GuiSysEvent(_GuiSysEvent.GuiSysEventType.HIT_CHANGED, {\n          lastHit: this._cursor.lastHit,\n          currentHit: currentHit,\n          lastSource: this._cursor.source,\n          currentSource: source\n        }));\n        this._cursor.lastHit = currentHit;\n        this._cursor.source = source;\n      }\n\n      // Emit focus lost events\n      for (var id in this._cursor.lastHitCache) {\n        if (!hitCache[id]) {\n          this.eventDispatcher.dispatchEvent(new _GuiSysEvent.UIViewEvent(this._cursor.lastHitCache[id], _GuiSysEvent.UIViewEventType.FOCUS_LOST, {\n            target: this._cursor.lastHit,\n            source: this._cursor.source\n          }));\n        }\n      }\n      // Emit focus gained events\n      for (var _id in hitCache) {\n        if (!this._cursor.lastHitCache[_id]) {\n          this.eventDispatcher.dispatchEvent(new _GuiSysEvent.UIViewEvent(hitCache[_id], _GuiSysEvent.UIViewEventType.FOCUS_GAINED, {\n            target: this._cursor.lastHit,\n            source: this._cursor.source\n          }));\n        }\n      }\n\n      // Update hit cache\n      this._cursor.lastHitCache = hitCache;\n      // Update hit immediate listeners\n      this._cursor.lastHitImmediateListeners = hitImmediateListeners;\n    }\n  }, {\n    key: 'addCursor',\n    value: function addCursor() {\n      this.cursorMesh = this.makeDefaultCursor();\n      this.cursorMesh.raycast = function () {\n        return null; // Disable hit/intersection with cursor mesh.\n      };\n      this.root.add(this.cursorMesh);\n      this.cursorMesh.visible = false;\n\n      // Make cursor appear on top of other objects.\n      this.cursorMesh.material.depthTest = false;\n      this.cursorMesh.material.depthWrite = false;\n      this.cursorMesh.renderOrder = 1;\n    }\n  }, {\n    key: 'updateCursor',\n    value: function updateCursor(camera) {\n      // The cursor is placed at fixed distance from camera, unless cursorAutoDepth\n      // is enabled and cursor is over a UI object, then we put the cursor at same\n      // distance as that object (i.e. intersectDistance).\n      var cursorZ = this.cursorAutoDepth && this._cursor.lastHit !== null ? this._cursor.intersectDistance : this.cursorFixedDistance;\n\n      var lastOrigin = this._cursor.rayOrigin;\n      var lastDirection = this._cursor.rayDirection;\n      // Update cursor based on global transform of camera. Leave matrixAutoUpdate\n      // enabled, since we modify cursorMesh.scale when cursorAutoDepth is used.\n      if (this.cursorMesh && this.cursorVisibility !== 'hidden' && lastOrigin && lastDirection) {\n        var cameraToCursorX = lastOrigin[0] + lastDirection[0] * cursorZ;\n        var cameraToCursorY = lastOrigin[1] + lastDirection[1] * cursorZ;\n        var cameraToCursorZ = lastOrigin[2] + lastDirection[2] * cursorZ;\n        this.cursorMesh.position.set(camera.position.x + cameraToCursorX, camera.position.y + cameraToCursorY, camera.position.z + cameraToCursorZ);\n        this.cursorMesh.rotation.copy(camera.getWorldRotation());\n\n        if (this.cursorAutoDepth) {\n          // Scale cursor so it appears same size regardless of depth.\n          // TODO: Clamping to a max/min depth.\n          var scale = Math.sqrt(cameraToCursorX * cameraToCursorX + cameraToCursorY * cameraToCursorY + cameraToCursorZ * cameraToCursorZ);\n          this.cursorMesh.scale.set(scale, scale, scale);\n        }\n      }\n\n      // Update visibility of cursor\n      if (this.cursorMesh) {\n        var autoVisible = false;\n        if (this.cursorVisibility === 'auto') {\n          // Show cursor if it intersects an interactable view (lastHit), or is\n          // 'close' to one (almostHit). Boundaries used by raycaster for lastHit\n          // and almostHit are set per-view with hitSlop and cursorVisibilitySlop.\n          autoVisible = this._cursor.lastHit !== null && this._cursor.lastHit.isInteractable;\n          if (!autoVisible) {\n            autoVisible = this._cursor.lastAlmostHit !== null && this._cursor.lastAlmostHit.isInteractable;\n          }\n        }\n        // Always hide gaze cursor when mouse cursor is detected.\n        this.cursorMesh.visible = this._cursor.drawsCursor && (this.cursorVisibility === 'visible' || autoVisible) && lastOrigin !== null && lastDirection !== null;\n      }\n    }\n  }, {\n    key: 'makeDefaultCursor',\n    value: function makeDefaultCursor() {\n      var canvas = document.createElement('canvas');\n      // Three.js requires textures in powers of 2 (and not fractions).\n      canvas.width = 256;\n      canvas.height = 256;\n      // Draw circle on canvas programatically.\n      // TODO: Customize color or change color on hit.\n      // TODO: Support image provided by us or by user.\n      var ctx = canvas.getContext('2d');\n      ctx.beginPath();\n      // centerX, centerY, radius, startAngle, endAngle\n      ctx.arc(128, 128, 95, 0, 2 * Math.PI);\n      // Match UI style guide: white outline 100% opaque, white fill 80% opaque.\n      ctx.strokeStyle = 'rgba(256, 256, 256, 1)';\n      ctx.fillStyle = 'rgba(256, 256, 256, 0.8)';\n      ctx.lineWidth = 25;\n      ctx.stroke();\n      ctx.fill();\n      // Canvas contents will be used for a texture.\n      var texture = new _ThreeShim2.default.Texture(canvas);\n      texture.needsUpdate = true;\n      var material = new _ThreeShim2.default.MeshBasicMaterial({\n        transparent: true,\n        opacity: 1.0,\n        side: _ThreeShim2.default.DoubleSide,\n        map: texture\n      });\n      // scale to 25mm (~1 inches)\n      var defaultCursor = new _ThreeShim2.default.Mesh(new _ThreeShim2.default.PlaneGeometry(DEFAULT_CURSOR_WIDTH, DEFAULT_CURSOR_WIDTH), material);\n      return defaultCursor;\n    }\n  }, {\n    key: '_updateMouseCursorStyle',\n    value: function _updateMouseCursorStyle(renderTarget) {\n      var cursorStyle = this.mouseCursorActive ? this.mouseCursorActiveStyle : this.mouseCursorInactiveStyle;\n      if (renderTarget && renderTarget.style) {\n        renderTarget.style.cursor = cursorStyle;\n        renderTarget.style.cursor = '-webkit-' + cursorStyle;\n        renderTarget.style.cursor = '-moz-' + cursorStyle;\n      }\n    }\n  }, {\n    key: '_onPresentChange',\n    value: function _onPresentChange(e) {\n      this.isVRPresenting = e.display.isPresenting;\n    }\n  }, {\n    key: '_fireInputEvents',\n    value: function _fireInputEvents(target) {\n      var collected = [];\n      for (var i = 0; i < this._inputEventSources.length; i++) {\n        var source = this._inputEventSources[i];\n        if (typeof source.getTarget === 'function') {\n          if (source.getTarget() !== target) {\n            source.setTarget(target);\n          }\n        }\n\n        var events = source.getEvents();\n        if (events) {\n          collected = collected.concat(events);\n        }\n      }\n\n      for (var _i = 0; _i < collected.length; _i++) {\n        // Attach last hit target to the event\n        this.eventDispatcher.dispatchEvent(new _GuiSysEvent.GuiSysEvent(_GuiSysEvent.GuiSysEventType.INPUT_EVENT, {\n          target: this._cursor.lastHit,\n          source: this._cursor.source,\n          inputEvent: collected[_i]\n        }));\n      }\n    }\n  }, {\n    key: '_onTouchImmediate',\n    value: function _onTouchImmediate(event) {\n      var listeners = this._cursor.lastHitImmediateListeners;\n      if (listeners) {\n        for (var i = 0; i < listeners.length; i++) {\n          if (listeners[i].eventType === event.eventType) {\n            listeners[i].callback(event);\n          }\n        }\n      }\n    }\n  }, {\n    key: 'registerOffscreenRender',\n    value: function registerOffscreenRender(scene, camera, renderTarget) {\n      var uid = this._offscreenRenderUID++;\n      this._offscreenRenders[uid] = { scene: scene, camera: camera, renderTarget: renderTarget };\n      return uid;\n    }\n  }, {\n    key: 'unregisterOffscreenRender',\n    value: function unregisterOffscreenRender(uid) {\n      if (!uid) {\n        return;\n      }\n      delete this._offscreenRenders[uid];\n    }\n  }, {\n    key: 'getOffscreenRenders',\n    value: function getOffscreenRenders() {\n      return this._offscreenRenders;\n    }\n  }, {\n    key: 'setFont',\n    value: function setFont(font) {\n      this.font = font;\n    }\n\n    /**\n    * Customize the mouse cursor style when mouse cursor is inactive\n    */\n\n  }, {\n    key: 'setMouseCursorInactiveStyle',\n    value: function setMouseCursorInactiveStyle(style) {\n      this.mouseCursorInactiveStyle = style;\n    }\n\n    /**\n    * Customize the mouse cursor style when mouse cursor is active\n    */\n\n  }, {\n    key: 'setMouseCursorActiveStyle',\n    value: function setMouseCursorActiveStyle(style) {\n      this.mouseCursorActiveStyle = style;\n    }\n\n    /**\n    * Sets if the cursor display mode\n    */\n\n  }, {\n    key: 'setCursorVisibility',\n    value: function setCursorVisibility(visibility) {\n      var modes = ['visible', 'hidden', 'auto'];\n      if (!modes.includes(visibility)) {\n        console.warn('Unknown cursorVisibility: ' + visibility + ' expected', modes);\n        return;\n      }\n      this.cursorVisibility = visibility;\n    }\n\n    /**\n    * An autodepth cursor will change distance based on where the interaction occurs\n    */\n\n  }, {\n    key: 'setCursorAutoDepth',\n    value: function setCursorAutoDepth(flag) {\n      this.cursorAutoDepth = flag;\n    }\n\n    /**\n    * manual setting of distance of the cursor from the camera\n    */\n\n  }, {\n    key: 'setCursorFixedDistance',\n    value: function setCursorFixedDistance(distance) {\n      this.cursorFixedDistance = distance;\n    }\n\n    /**\n     * Replace the set of RayCasters to use.\n     */\n\n  }, {\n    key: 'setRaycasters',\n    value: function setRaycasters(raycasters) {\n      if (!Array.isArray(raycasters)) {\n        throw new Error('GuiSys raycasters must be an array of RayCaster objects');\n      }\n      this._raycasters = raycasters;\n    }\n  }, {\n    key: 'getLastLocalIntersect',\n    value: function getLastLocalIntersect() {\n      if (this._cursor.lastLocalX === null || this._cursor.lastLocalY === null) {\n        return null;\n      }\n      return [this._cursor.lastLocalX, this._cursor.lastLocalY];\n    }\n  }]);\n\n  return GuiSys;\n}();\n\nexports.default = GuiSys;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\nvar GuiSysEventType = exports.GuiSysEventType = {\n  HIT_CHANGED: 'HIT_CHANGED',\n  INPUT_EVENT: 'INPUT_EVENT'\n};\n\nvar GuiSysEvent = exports.GuiSysEvent = function GuiSysEvent(eventType, args) {\n  _classCallCheck(this, GuiSysEvent);\n\n  this.type = 'GuiSysEvent';\n  this.eventType = eventType;\n  this.args = args;\n};\n\nvar UIViewEventType = exports.UIViewEventType = {\n  FOCUS_LOST: 'FOCUS_LOST',\n  FOCUS_GAINED: 'FOCUS_GAINED'\n};\n\nvar UIViewEvent = exports.UIViewEvent = function UIViewEvent(view, eventType, args) {\n  _classCallCheck(this, UIViewEvent);\n\n  this.type = 'UIViewEvent';\n  this.view = view;\n  this.eventType = eventType;\n  this.args = args;\n};","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _EventInput2 = require('./EventInput');\n\nvar _EventInput3 = _interopRequireDefault(_EventInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar getGamepads = (navigator.getGamepads ? navigator.getGamepads : navigator.webkitGetGamepads ? navigator.webkitGetGamepads : function () {\n  return [];\n}).bind(navigator);\n\nvar LONG_PRESS_TIME = 500;\nvar AXIS_EPSILON = 0.001; // Smallest axis change needed to record a change event\n\nvar GamepadEventInput = function (_EventInput) {\n  _inherits(GamepadEventInput, _EventInput);\n\n  function GamepadEventInput() {\n    _classCallCheck(this, GamepadEventInput);\n\n    var _this = _possibleConstructorReturn(this, (GamepadEventInput.__proto__ || Object.getPrototypeOf(GamepadEventInput)).call(this, 'GamepadInputEvent'));\n\n    _this._previousState = [];\n    return _this;\n  }\n\n  _createClass(GamepadEventInput, [{\n    key: 'getEvents',\n    value: function getEvents() {\n      var now = Date.now();\n      var gamepads = getGamepads();\n      var events = [];\n      for (var id = 0; id < gamepads.length; id++) {\n        if (gamepads[id]) {\n          if (!this._previousState[id]) {\n            this._previousState[id] = {\n              buttons: [],\n              axes: []\n            };\n          }\n          var state = this._previousState[id];\n          var _buttons = gamepads[id].buttons;\n          for (var btn = 0; btn < _buttons.length; btn++) {\n            var buttonState = state.buttons[btn];\n            if (!buttonState) {\n              buttonState = {\n                pressed: false,\n                startTime: -1\n              };\n              state.buttons[btn] = buttonState;\n            }\n            var _pressed = _typeof(_buttons[btn]) === 'object' ? _buttons[btn].pressed : _buttons[btn] === 1.0;\n            if (buttonState.pressed !== _pressed) {\n              if (_pressed) {\n                buttonState.pressed = true;\n                buttonState.startTime = now;\n                events.push({\n                  type: this.getEventType(),\n                  eventType: 'keydown',\n                  button: btn,\n                  gamepad: id,\n                  repeat: false\n                });\n              } else {\n                buttonState.pressed = false;\n                events.push({\n                  type: this.getEventType(),\n                  eventType: 'keyup',\n                  button: btn,\n                  gamepad: id\n                });\n              }\n            } else if (_pressed && now - buttonState.startTime > LONG_PRESS_TIME) {\n              events.push({\n                type: this.getEventType(),\n                eventType: 'keydown',\n                button: btn,\n                gamepad: id,\n                repeat: true\n              });\n            }\n          }\n\n          var _axes = gamepads[id].axes;\n          if (_axes) {\n            for (var _axis = 0; _axis < _axes.length; _axis++) {\n              var oldValue = state.axes[_axis];\n              var newValue = _axes[_axis];\n              if (typeof oldValue !== 'number') {\n                // initialization should not be a change\n                state.axes[_axis] = newValue;\n                continue;\n              }\n              if (Math.abs(newValue - oldValue) > AXIS_EPSILON) {\n                events.push({\n                  type: this.getEventType(),\n                  eventType: 'axismove',\n                  axis: _axis,\n                  gamepad: id,\n                  value: newValue\n                });\n              }\n              state.axes[_axis] = newValue;\n            }\n          }\n        } else {\n          if (this._previousState[id]) {\n            delete this._previousState[id];\n          }\n        }\n      }\n      return events;\n    }\n  }]);\n\n  return GamepadEventInput;\n}(_EventInput3.default);\n\nexports.default = GamepadEventInput;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar EventInput = function () {\n  function EventInput(eventType) {\n    _classCallCheck(this, EventInput);\n\n    this._eventType = eventType;\n  }\n\n  _createClass(EventInput, [{\n    key: \"getEventType\",\n    value: function getEventType() {\n      return this._eventType;\n    }\n  }]);\n\n  return EventInput;\n}();\n\nexports.default = EventInput;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _EventInput2 = require('./EventInput');\n\nvar _EventInput3 = _interopRequireDefault(_EventInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar KEYBOARD_EVENTS = ['keydown', 'keypress', 'keyup'];\n\nvar KeyboardEventInput = function (_EventInput) {\n  _inherits(KeyboardEventInput, _EventInput);\n\n  function KeyboardEventInput() {\n    _classCallCheck(this, KeyboardEventInput);\n\n    var _this = _possibleConstructorReturn(this, (KeyboardEventInput.__proto__ || Object.getPrototypeOf(KeyboardEventInput)).call(this, 'KeyboardInputEvent'));\n\n    _this._batchedEvents = [];\n    _this._onKeyboardEvent = _this._onKeyboardEvent.bind(_this);\n\n    _this._addEventListeners();\n    return _this;\n  }\n\n  _createClass(KeyboardEventInput, [{\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = KEYBOARD_EVENTS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var type = _step.value;\n\n          window.addEventListener(type, this._onKeyboardEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_removeEventListeners',\n    value: function _removeEventListeners() {\n      var _iteratorNormalCompletion2 = true;\n      var _didIteratorError2 = false;\n      var _iteratorError2 = undefined;\n\n      try {\n        for (var _iterator2 = KEYBOARD_EVENTS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n          var type = _step2.value;\n\n          window.removeEventListener(type, this._onKeyboardEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError2 = true;\n        _iteratorError2 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion2 && _iterator2.return) {\n            _iterator2.return();\n          }\n        } finally {\n          if (_didIteratorError2) {\n            throw _iteratorError2;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_onKeyboardEvent',\n    value: function _onKeyboardEvent(e) {\n      this._batchedEvents.push({\n        type: this.getEventType(),\n        eventType: e.type,\n        altKey: e.altKey,\n        code: e.code,\n        ctrlKey: e.ctrlKey,\n        key: e.key,\n        keyCode: e.keyCode,\n        metaKey: e.metaKey,\n        repeat: e.repeat,\n        shiftKey: e.shiftKey\n      });\n    }\n  }, {\n    key: 'getEvents',\n    value: function getEvents() {\n      var events = this._batchedEvents;\n      if (events.length < 1) {\n        return null;\n      }\n      this._batchedEvents = [];\n      return events;\n    }\n  }]);\n\n  return KeyboardEventInput;\n}(_EventInput3.default);\n\nexports.default = KeyboardEventInput;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _EventInput2 = require('./EventInput');\n\nvar _EventInput3 = _interopRequireDefault(_EventInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar MOUSE_EVENTS = ['mousedown', 'mouseup', 'click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'wheel'];\n\nfunction getDocumentBounds() {\n  return {\n    top: 0,\n    left: 0,\n    width: document.body ? document.body.clientWidth : 0,\n    height: document.body ? document.body.clientHeight : 0\n  };\n}\n\nvar MouseEventInput = function (_EventInput) {\n  _inherits(MouseEventInput, _EventInput);\n\n  function MouseEventInput(target) {\n    _classCallCheck(this, MouseEventInput);\n\n    var _this = _possibleConstructorReturn(this, (MouseEventInput.__proto__ || Object.getPrototypeOf(MouseEventInput)).call(this, 'MouseInputEvent'));\n\n    _this._batchedEvents = [];\n    _this._target = target || document;\n    _this._onMouseEvent = _this._onMouseEvent.bind(_this);\n\n    _this._addEventListeners();\n    return _this;\n  }\n\n  _createClass(MouseEventInput, [{\n    key: 'getTarget',\n    value: function getTarget() {\n      return this._target;\n    }\n  }, {\n    key: 'setTarget',\n    value: function setTarget(target) {\n      if (this._target) {\n        this._removeEventListeners();\n      }\n      this._target = target;\n      this._addEventListeners();\n    }\n  }, {\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = MOUSE_EVENTS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var type = _step.value;\n\n          this._target.addEventListener(type, this._onMouseEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_removeEventListeners',\n    value: function _removeEventListeners() {\n      var _iteratorNormalCompletion2 = true;\n      var _didIteratorError2 = false;\n      var _iteratorError2 = undefined;\n\n      try {\n        for (var _iterator2 = MOUSE_EVENTS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n          var type = _step2.value;\n\n          this._target.removeEventListener(type, this._onMouseEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError2 = true;\n        _iteratorError2 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion2 && _iterator2.return) {\n            _iterator2.return();\n          }\n        } finally {\n          if (_didIteratorError2) {\n            throw _iteratorError2;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_onMouseEvent',\n    value: function _onMouseEvent(e) {\n      var target = e.currentTarget;\n      if (target && target === this._target) {\n        var viewport = typeof target.getBoundingClientRect === 'function' ? target.getBoundingClientRect() : getDocumentBounds();\n        var _viewportX = (e.clientX - viewport.left) / viewport.width * 2 - 1;\n        var _viewportY = -((e.clientY - viewport.top) / viewport.height) * 2 + 1;\n        this._batchedEvents.push({\n          type: this.getEventType(),\n          eventType: e.type,\n          altKey: e.altKey,\n          button: e.button,\n          buttons: e.buttons,\n          ctrlKey: e.ctrlKey,\n          metaKey: e.metaKey,\n          shiftKey: e.shiftKey,\n          viewportX: _viewportX,\n          viewportY: _viewportY\n        });\n      }\n    }\n  }, {\n    key: 'getEvents',\n    value: function getEvents() {\n      var events = this._batchedEvents;\n      if (events.length < 1) {\n        return null;\n      }\n      this._batchedEvents = [];\n      return events;\n    }\n  }]);\n\n  return MouseEventInput;\n}(_EventInput3.default);\n\nexports.default = MouseEventInput;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _EventInput2 = require('./EventInput');\n\nvar _EventInput3 = _interopRequireDefault(_EventInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar TOUCH_EVENTS = ['touchcancel', 'touchend', 'touchmove', 'touchstart'];\n\nfunction getDocumentBounds() {\n  return {\n    top: 0,\n    left: 0,\n    width: document.body ? document.body.clientWidth : 0,\n    height: document.body ? document.body.clientHeight : 0\n  };\n}\n\nfunction createTouchList(rawList, viewport) {\n  var touchList = [];\n  for (var i = 0; i < rawList.length; i++) {\n    var touch = rawList[i];\n    var _viewportX = (touch.clientX - viewport.left) / viewport.width * 2 - 1;\n    var _viewportY = -((touch.clientY - viewport.top) / viewport.height) * 2 + 1;\n    touchList.push({\n      identifier: touch.identifier,\n      target: touch.target,\n      viewportX: _viewportX,\n      viewportY: _viewportY\n    });\n  }\n\n  return touchList;\n}\n\nvar TouchEventInput = function (_EventInput) {\n  _inherits(TouchEventInput, _EventInput);\n\n  function TouchEventInput(target) {\n    _classCallCheck(this, TouchEventInput);\n\n    var _this = _possibleConstructorReturn(this, (TouchEventInput.__proto__ || Object.getPrototypeOf(TouchEventInput)).call(this, 'TouchInputEvent'));\n\n    _this._batchedEvents = [];\n    _this._target = target || document;\n    _this._onTouchEvent = _this._onTouchEvent.bind(_this);\n\n    _this._addEventListeners();\n    _this._immediateListener = null;\n    return _this;\n  }\n\n  _createClass(TouchEventInput, [{\n    key: 'getTarget',\n    value: function getTarget() {\n      return this._target;\n    }\n  }, {\n    key: 'setTarget',\n    value: function setTarget(target) {\n      if (this._target) {\n        this._removeEventListeners();\n      }\n      this._target = target;\n      this._addEventListeners();\n    }\n  }, {\n    key: 'setImmediateListener',\n    value: function setImmediateListener(listener) {\n      this._immediateListener = listener;\n    }\n  }, {\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = TOUCH_EVENTS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var type = _step.value;\n\n          this._target.addEventListener(type, this._onTouchEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_removeEventListeners',\n    value: function _removeEventListeners() {\n      var _iteratorNormalCompletion2 = true;\n      var _didIteratorError2 = false;\n      var _iteratorError2 = undefined;\n\n      try {\n        for (var _iterator2 = TOUCH_EVENTS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n          var type = _step2.value;\n\n          this._target.removeEventListener(type, this._onTouchEvent, true);\n        }\n      } catch (err) {\n        _didIteratorError2 = true;\n        _iteratorError2 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion2 && _iterator2.return) {\n            _iterator2.return();\n          }\n        } finally {\n          if (_didIteratorError2) {\n            throw _iteratorError2;\n          }\n        }\n      }\n    }\n  }, {\n    key: '_onTouchEvent',\n    value: function _onTouchEvent(e) {\n      e.preventDefault();\n      var target = e.currentTarget;\n      if (target && target === this._target) {\n        var viewport = typeof target.getBoundingClientRect === 'function' ? target.getBoundingClientRect() : getDocumentBounds();\n        var touchEvent = {\n          type: this.getEventType(),\n          eventType: e.type,\n          altKey: e.altKey,\n          changedTouches: createTouchList(e.changedTouches, viewport),\n          ctrlKey: e.ctrlKey,\n          metaKey: e.metaKey,\n          shiftKey: e.shiftKey,\n          targetTouches: createTouchList(e.targetTouches, viewport),\n          touches: createTouchList(e.touches, viewport)\n        };\n        this._batchedEvents.push(touchEvent);\n        if (this._immediateListener) {\n          this._immediateListener(touchEvent);\n        }\n      }\n    }\n  }, {\n    key: 'getEvents',\n    value: function getEvents() {\n      var events = this._batchedEvents;\n      if (events.length < 1) {\n        return null;\n      }\n      this._batchedEvents = [];\n      return events;\n    }\n  }]);\n\n  return TouchEventInput;\n}(_EventInput3.default);\n\nexports.default = TouchEventInput;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _RayCaster2 = require('./RayCaster');\n\nvar _RayCaster3 = _interopRequireDefault(_RayCaster2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\nvar ORIGIN = [0, 0, 0];\n\nvar MouseRayCaster = function (_RayCaster) {\n  _inherits(MouseRayCaster, _RayCaster);\n\n  function MouseRayCaster() {\n    _classCallCheck(this, MouseRayCaster);\n\n    var _this = _possibleConstructorReturn(this, (MouseRayCaster.__proto__ || Object.getPrototypeOf(MouseRayCaster)).call(this));\n\n    _this._lastX = null;\n    _this._lastY = null;\n    _this._lastOrientation = null;\n    _this.touchReleaseDelay = 300;\n\n    _this._active = true;\n\n    _this._handleMouseEvent = _this._handleMouseEvent.bind(_this);\n    _this._handleTouchEvent = _this._handleTouchEvent.bind(_this);\n    _this._handleTouchEnd = _this._handleTouchEnd.bind(_this);\n    _this._resetLastReading = _this._resetLastReading.bind(_this);\n\n    document.addEventListener('mousemove', _this._handleMouseEvent);\n    document.addEventListener('touchstart', _this._handleTouchEvent);\n    document.addEventListener('touchmove', _this._handleTouchEvent);\n    document.addEventListener('touchend', _this._handleTouchEnd);\n    document.addEventListener('touchcancel', _this._handleTouchEnd);\n    window.addEventListener('vrdisplaypresentchange', function (e) {\n      // Disable the mouse when in headset, re-enable when leaving\n      _this._active = !e.display.isPresenting;\n    });\n    return _this;\n  }\n\n  _createClass(MouseRayCaster, [{\n    key: '_handleMouseEvent',\n    value: function _handleMouseEvent(e) {\n      if (!this._active) {\n        return;\n      }\n      var width = document.body ? document.body.clientWidth : 0;\n      var height = document.body ? document.body.clientHeight : 0;\n      var x = e.clientX / width * 2 - 1;\n      var y = -(e.clientY / height) * 2 + 1;\n      if (this._lastX !== x || this._lastY !== y) {\n        this._lastOrientation = null;\n      }\n      this._lastX = x;\n      this._lastY = y;\n    }\n  }, {\n    key: '_handleTouchEvent',\n    value: function _handleTouchEvent(e) {\n      if (!this._active) {\n        return;\n      }\n      var targetTouches = e.targetTouches;\n      if (targetTouches && targetTouches.length > 0) {\n        var width = document.body ? document.body.clientWidth : 0;\n        var height = document.body ? document.body.clientHeight : 0;\n        var rawTouch = e.targetTouches[0];\n        var x = rawTouch.clientX / width * 2 - 1;\n        var y = -(rawTouch.clientY / height) * 2 + 1;\n        if (this._lastX !== x || this._lastY !== y) {\n          this._lastOrientation = null;\n        }\n        this._lastX = x;\n        this._lastY = y;\n      } else {\n        this._endTouch();\n      }\n    }\n  }, {\n    key: '_handleTouchEnd',\n    value: function _handleTouchEnd(e) {\n      if (!this._active) {\n        return;\n      }\n      this._endTouch();\n    }\n  }, {\n    key: '_endTouch',\n    value: function _endTouch() {\n      if (this._touchReleaseTimeout) {\n        clearTimeout(this._touchReleaseTimeout);\n      }\n      this._touchReleaseTimeout = setTimeout(this._resetLastReading, this.touchReleaseDelay);\n    }\n  }, {\n    key: '_resetLastReading',\n    value: function _resetLastReading() {\n      this._lastX = null;\n      this._lastY = null;\n      this._lastOrientation = null;\n    }\n  }, {\n    key: '_clearTouchReleaseTimeout',\n    value: function _clearTouchReleaseTimeout() {\n      if (this._touchReleaseTimeout) {\n        clearTimeout(this._touchReleaseTimeout);\n      }\n      this._touchReleaseTimeout = null;\n    }\n  }, {\n    key: 'getType',\n    value: function getType() {\n      return 'mouse';\n    }\n  }, {\n    key: 'getRayOrigin',\n    value: function getRayOrigin() {\n      if (!this._active) {\n        return null;\n      }\n      return ORIGIN;\n    }\n  }, {\n    key: 'getRayDirection',\n    value: function getRayDirection(camera) {\n      if (!this._active) {\n        return null;\n      }\n      if (this._lastOrientation) {\n        return this._lastOrientation;\n      }\n      if (this._lastX === null || this._lastY === null) {\n        return null;\n      }\n      var fov = camera.fov * Math.PI / 180;\n      var tan = Math.tan(fov / 2);\n      var x = camera.aspect * tan * this._lastX;\n      var y = tan * this._lastY;\n      var mag = Math.sqrt(1 + x * x + y * y);\n      this._lastOrientation = [x / mag, y / mag, -1 / mag];\n      return this._lastOrientation;\n    }\n  }, {\n    key: 'drawsCursor',\n    value: function drawsCursor() {\n      return false;\n    }\n  }]);\n\n  return MouseRayCaster;\n}(_RayCaster3.default);\n\nexports.default = MouseRayCaster;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n/**\n * Abstract implementation of a RayCaster. Override the getRayOrigin and\n * getRayDirection methods to implement your own RayCaster.\n */\nvar RayCaster = function () {\n  function RayCaster() {\n    _classCallCheck(this, RayCaster);\n  }\n\n  _createClass(RayCaster, [{\n    key: 'getType',\n    value: function getType() {\n      // Return a unique string identifier to send along with input events.\n      // This can be used on the React side to determine the type of raycaster\n      // that triggered an onEnter / onExit event, allowing the application to\n      // provide different behavior for different input schemes..\n      throw new Error('RayCaster subclasses must override getType()');\n    }\n  }, {\n    key: 'frame',\n    value: function frame(startTime) {\n      // Run any per-frame updates, like modifying the rendered\n    }\n  }, {\n    key: 'getRayOrigin',\n    value: function getRayOrigin(camera) {\n      // Return the origin of the ray, relative to the camera's position.\n      // Returned value should either be an array of 3 values (x, y, z),\n      // or null. Returning a falsy value will cause React VR to use another\n      // RayCaster to determine the cursor position.\n      throw new Error('RayCaster subclasses must override getRayOrigin()');\n    }\n  }, {\n    key: 'getRayDirection',\n    value: function getRayDirection(camera) {\n      // Return the direction vector of the ray, relative to the camera.\n      // Returned value should either be an array of 3 values (x, y, z),\n      // or null. Returning a falsy value will cause React VR to use another\n      // RayCaster to determine the cursor position.\n      throw new Error('RayCaster subclasses must override getRayDirection()');\n    }\n  }, {\n    key: 'drawsCursor',\n    value: function drawsCursor() {\n      // Return a boolean determining whether this ray caster can draw a cursor.\n      // The application will control when it's shown, but cursors can be\n      // completely disabled by returning false here.\n      return true;\n    }\n  }]);\n\n  return RayCaster;\n}();\n\nexports.default = RayCaster;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setParams = setParams;\nexports.defaultScaleType = defaultScaleType;\nexports.resizeModetoScaleType = resizeModetoScaleType;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n// UIViewUtil is a helper for UIView.\n// Initialize parameters for an object using its setter methods. If setter doesn't exist,\n// report error. Used to avoid sequence of setter function calls.\n// example:\n//   setParams(myObject, {'key': 'value', 'keyTwo': 2});  would resolve to...\n//   myObject.setKey('value'); myObject.setKeyTwo(2);\n//\nfunction setParams(object, params) {\n  if (params === undefined) {\n    return;\n  }\n\n  for (var key in params) {\n    var func = 'set' + key.charAt(0).toUpperCase() + key.slice(1); // capitalize first letter\n    if (typeof object[func] !== 'function') {\n      console.warn('\"' + func + '\" is not a function of UIView.');\n      continue;\n    }\n\n    var newValue = params[key];\n    object[func](newValue);\n  }\n}\n\n/*\n * Scale type performs calculations for doing Image Resize for UIView.\n * Call getScaleParams to get scale parameters for FourByFourRectGeometry\n */\n\n// Scale the image so that both dimensions of the image will be equal to or less than\n// the view dimension. This maintains the image's aspect ratio.\n// Inset is disabled in this scale type.\nvar ScaleFitCenter = {\n  getScaleParams: function getScaleParams(dims, textureDim, inset, insetSize, borderWidth) {\n    dims = dims || [1, 1];\n    textureDim = textureDim || [0, 0];\n    var scaledDims = [].concat(_toConsumableArray(dims));\n    if (dims[0] > 0 && dims[1] > 0 && textureDim[0] > 0 && textureDim[1] > 0) {\n      var scale = [dims[0] / textureDim[0], dims[1] / textureDim[1]];\n      var minScale = Math.min(scale[0], scale[1]);\n      scaledDims = [textureDim[0] * minScale, textureDim[1] * minScale];\n    }\n    return {\n      dims: scaledDims,\n      border: {\n        cssBorderWidth: borderWidth,\n        originalDim: dims\n      },\n      cropUV: [0, 0, 1, 1]\n    };\n  }\n};\n\n// Scale the images width and height independently, this may change the aspect ratio.\n// Inset is enabled in this scale type.\nvar ScaleFixXY = {\n  getScaleParams: function getScaleParams(dims, textureDim, inset, insetSize, borderWidth) {\n    dims = dims || [1, 1];\n    textureDim = textureDim || [0, 0];\n    return {\n      dims: dims,\n      border: {\n        texture: inset,\n        factor: [insetSize[0] / dims[0], insetSize[1] / dims[1], insetSize[2] / dims[0], insetSize[3] / dims[1]],\n        cssBorderWidth: borderWidth\n      },\n      cropUV: [0, 0, 1, 1]\n    };\n  }\n};\n\n// Scale the image so that both dimensions of the image will be equal to or larger  than\n// the view dimension. Pixels outside view will be cropped. This maintains the image's\n// aspect ratio.\n// Inset is disabled in this scale type.\nvar ScaleCenterCrop = {\n  getScaleParams: function getScaleParams(dims, textureDim, inset, insetSize, borderWidth) {\n    dims = dims || [1, 1];\n    textureDim = textureDim || [0, 0];\n    var cropOffset = [0, 0];\n    if (dims[0] > 0 && dims[1] > 0 && textureDim[0] > 0 && textureDim[1] > 0) {\n      var scale = [textureDim[0] / dims[0], textureDim[1] / dims[1]];\n      var minScale = Math.min(scale[0], scale[1]);\n      cropOffset = [(1 - dims[0] * minScale / textureDim[0]) / 2, (1 - dims[1] * minScale / textureDim[1]) / 2];\n    }\n    return {\n      dims: dims,\n      border: {\n        cssBorderWidth: borderWidth\n      },\n      cropUV: [cropOffset[0], cropOffset[1], 1 - cropOffset[0], 1 - cropOffset[1]]\n    };\n  }\n};\n\nvar ScaleType = exports.ScaleType = {\n  FIT_CENTER: ScaleFitCenter,\n  FIT_XY: ScaleFixXY,\n  CENTER_CROP: ScaleCenterCrop\n};\n\n// In VR spec, FIT_XY is default\nfunction defaultScaleType() {\n  return ScaleType.FIT_XY;\n}\n\n// Convert resizeMode to scale type\nfunction resizeModetoScaleType(resizeModeValue) {\n  if (resizeModeValue === 'contain') {\n    return ScaleType.FIT_CENTER;\n  } else if (resizeModeValue === 'cover') {\n    return ScaleType.CENTER_CROP;\n  } else if (resizeModeValue === 'stretch') {\n    return ScaleType.FIT_XY;\n  } else if (resizeModeValue === 'center') {\n    // center does not make sence in VR spec, fallback to contain\n    return ScaleType.FIT_CENTER;\n  } else if (resizeModeValue == null) {\n    // When null or undefined, use the default.\n    return defaultScaleType();\n  } else {\n    console.error(\"Invalid resize mode: '\" + resizeModeValue + \"'\");\n    return defaultScaleType();\n  }\n}\n\n/*\n * PointerEvents defines how the uiview accept hit event and intercept its subviews's hit event\n * auto: the view and its subviews can be target of hit events\n * none: the view and its subviews can never be the target of hit events.\n * box-none: the view is never the target of hit events but it's subviews can be\n * box-only: the view can be the target of hit events but it's subviews cannot be\n */\n\nvar PointerEvents = exports.PointerEvents = {\n  AUTO: 'auto',\n  NONE: 'none',\n  BOX_NONE: 'box-none',\n  BOX_ONLY: 'box-only'\n};","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = UIView;\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _UIViewUtil = require('./UIViewUtil');\n\nvar _VectorGeometry = require('../FourByFourRect/VectorGeometry');\n\nvar _SDFFont = require('../SDFFont/SDFFont');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\nvar DEFAULT_Z_OFFSET = 1;\n\nvar BACKGROUND_MAT_INDEX = 0;\nvar BORDER_MAT_INDEX = 1;\nvar IMAGE_MAT_INDEX = 2;\n\nvar DEFAULT_BACKGROUND_COLOR = 0xffffff;\nvar DEFAULT_BORDER_COLOR = 0x000000;\nvar DEFAULT_IMAGE_COLOR = 0xffffff;\n\n/**\n * Animated frames\n *\n * An animated config is defined as a duration, and create and/or update anim where the\n * type of anim is one of 'spring', 'linear', 'easeInEaseOut' ...\n *\n * Anim = {\n *   type:\n * }\n *\n * Config = {\n *   duration:,\n *   create:,\n *   update:\n * }\n**/\n\nvar AnimationFunctions = {\n  spring: function spring(dt) {\n    return 1 + Math.pow(2, -10 * dt) * Math.sin((dt - 0.5 / 4) * Math.PI * 2 / 0.5);\n  },\n  linear: function linear(dt) {\n    return dt;\n  },\n  easeInEaseOut: function easeInEaseOut(dt) {\n    return dt < 0.5 ? 2 * dt * dt : -1 + (4 - 2 * dt) * dt;\n  },\n  easeIn: function easeIn(dt) {\n    return dt * dt;\n  },\n  easeOut: function easeOut(dt) {\n    return dt * (2 - dt);\n  },\n  keyboard: function keyboard(dt) {\n    return dt;\n  }\n};\n\nfunction UIView(guiSys, params) {\n  _ThreeShim2.default.Object3D.call(this);\n\n  this.type = 'UIView';\n  this.clippingEnabled = false;\n  this.clipPlanes = [new _ThreeShim2.default.Plane(new _ThreeShim2.default.Vector3(1, 0, 0), 16384), new _ThreeShim2.default.Plane(new _ThreeShim2.default.Vector3(-1, 0, 0), 16384), new _ThreeShim2.default.Plane(new _ThreeShim2.default.Vector3(0, 1, 0), 16384), new _ThreeShim2.default.Plane(new _ThreeShim2.default.Vector3(0, -1, 0), 16384)];\n\n  this.geometry = new _ThreeShim2.default.PlaneGeometry(0, 0);\n  this.backgroundMaterial = new _ThreeShim2.default.MeshBasicMaterial({\n    clippingPlanes: this.clipPlanes,\n    color: DEFAULT_BACKGROUND_COLOR,\n    side: _ThreeShim2.default.DoubleSide\n  });\n  this.backgroundMaterial.transparent = true;\n  this.backgroundMaterial.visible = false;\n  this.backgroundMaterial.depthWrite = false;\n\n  this.borderMaterial = new _ThreeShim2.default.MeshBasicMaterial({\n    clippingPlanes: this.clipPlanes,\n    color: DEFAULT_BORDER_COLOR,\n    side: _ThreeShim2.default.DoubleSide\n  });\n  this.borderMaterial.transparent = true;\n  this.borderMaterial.visible = false;\n  this.borderMaterial.depthWrite = false;\n  this.imageMaterial = new _ThreeShim2.default.MeshBasicMaterial({\n    clippingPlanes: this.clipPlanes,\n    color: DEFAULT_IMAGE_COLOR,\n    side: _ThreeShim2.default.DoubleSide\n  });\n  this.imageMaterial.transparent = true;\n  this.imageMaterial.visible = false;\n  this.imageMaterial.depthWrite = false;\n  this.material = [this.backgroundMaterial, this.borderMaterial, this.imageMaterial];\n  this.material.side = _ThreeShim2.default.DoubleSide;\n  this.guiSys = guiSys;\n  this.zIndex = 0;\n\n  this.drawMode = _ThreeShim2.default.TrianglesDrawMode;\n\n  this.opacity = 1.0;\n  this.dirtyGeometry = true;\n  this.frame = [0, 0, 0, 0];\n  this.targetFrame = [0, 0, 0, 0];\n  this.frameDirty = true;\n  this.inset = [0, 0, 0, 0];\n  this.insetSize = [0, 0, 0, 0];\n  // hit expansion in left, top, right and bottom of render geometry\n  // positive values are outwards\n  this.hitSlop = [0, 0, 0, 0];\n  this.cursorVisibilitySlop = [0, 0, 0, 0];\n  this.borderWidth = [0, 0, 0, 0];\n  this.borderRadius = [0, 0, 0, 0];\n  this.scaleType = (0, _UIViewUtil.defaultScaleType)();\n  this.textureDim = [0, 0];\n  // crop[x, y, w, h] is the cropped area of the texture.\n  // x, y, w, h ranges from 0.0 ~ 1.0.\n  // The same as frame, [0, 0] is the left-top of the texture\n  this.crop = [0, 0, 1, 1];\n  this.backgroundOpacity = 1;\n  this.borderOpacity = 1;\n  this.imageOpacity = 1;\n  this.matrixAutoUpdate = false;\n  this.localRotate = new _ThreeShim2.default.Matrix4();\n  this.localPosition = [0, 0, 0];\n  // layoutZOffset represents the relative z offset layer from an UIView to\n  // its parent. This is to prevent z fighting between UIViews. The actual\n  // z distance should be layoutZOffset * guiSys.ZOffsetScale.\n  this.layoutZOffset = DEFAULT_Z_OFFSET;\n\n  this.text = null;\n  this.textDirty = false;\n  this.textHAlign = _SDFFont.CENTER_LINE;\n  this.textLinecount = 0;\n  this.textVAlign = _SDFFont.CENTER;\n  this.textColor = new _ThreeShim2.default.Color();\n  this.textSize = 2;\n  this.textMesh = new _ThreeShim2.default.Mesh(new _ThreeShim2.default.BufferGeometry(), guiSys.font.material);\n  this.textMesh.type = 'SDFText';\n  this.textMesh.textClip = [-16384, -16384, 16384, 16384];\n  this.textMesh.visible = false;\n  this.textMesh.onBeforeRender = function (renderer, scene, camera, geometry, material, group) {\n    if (geometry && geometry.isSDFText) {\n      geometry.onBeforeRender(this, material);\n    }\n  };\n  this.textFontParms = {\n    AlphaCenter: 0.47,\n    ColorCenter: 0.5\n  };\n  // Set dimensions of frame based on contained text.\n  this.autoScale = false;\n  // When cursor in auto-hide mode, only show when over an interactable object.\n  this.isInteractable = false;\n  // Mouse cursor state will be active when mouse over a mouse interactable object\n  this.isMouseInteractable = false;\n  // pointerEvents defines how the uiview accept hit event and intercept its subviews's hit event\n  this.pointerEvents = _UIViewUtil.PointerEvents.AUTO;\n  // billboarding pivots this view around an axis so that it faces the camera.\n  // Only effective when not in VR. Currently supported: 'on' and 'off'.\n  this.billboarding = 'off';\n\n  // listener for touch events, needed on Chrome Android to put video \"play\"\n  // method in the callback of a user gesture\n  this.immediateListener = null;\n\n  // Override default values. Can also call setter methods directly.\n  // example params: { 'textColor': 'yellow', 'backgroundColor' 'blue' }\n  if (params !== undefined) {\n    (0, _UIViewUtil.setParams)(this, params);\n  }\n\n  // disable collision on text\n  this.textMesh.raycast = function () {};\n  this.add(this.textMesh);\n}\n\nUIView.prototype = Object.assign(Object.create(_ThreeShim2.default.Object3D.prototype), {\n  constructor: UIView,\n\n  isMesh: true,\n\n  isGui: true,\n\n  updateGeometry: function (updateContext) {\n    var transform = new _ThreeShim2.default.Matrix4();\n    var config = {\n      frame: [0, 0, 0, 0]\n    };\n    return function (updateContext) {\n      if (!this.dirtyGeometry) {\n        return;\n      }\n\n      if (this.text) {\n        if (this.textDirty) {\n          if (this.autoScale) {\n            config.dim = (0, _SDFFont.measureText)(this.guiSys.font, this.text, this.textSize);\n            this.frame[2] = config.dim.maxWidth;\n            this.frame[3] = config.dim.maxHeight;\n          }\n          config.frame[0] = -this.frame[2] / 2;\n          config.frame[1] = -this.frame[3] / 2;\n          config.frame[2] = this.frame[2];\n          config.frame[3] = this.frame[3];\n          config.hAlign = this.textHAlign;\n          config.vAlign = this.textVAlign;\n          config.lineCount = this.textLinecount;\n          config.fontParms = this.textFontParms;\n          config.autoScale = this.autoScale;\n          this.textMesh.geometry.dispose();\n          this.textMesh.geometry = new _SDFFont.BitmapFontGeometry(this.guiSys.font, this.text, this.textSize, config);\n          this.textMesh.visible = !!this.textMesh.geometry;\n          this.textMesh.material = this.textMesh.geometry.materials;\n          this.textMesh.position.z = 0.01;\n          this.textDirty = false;\n        }\n      } else {\n        this.textMesh.geometry.dispose();\n        this.textMesh.visible = false;\n        this.textDirty = false;\n      }\n\n      // calculate the offset vector from this views centerpoint in the parent frame\n      // to the pivot point of the parent. This equals the offset that needs to be applied\n      // given the geometry's origin is the mid point of width and height\n      var x = this.frame[0] + this.frame[2] / 2;\n      var y = this.frame[1] - this.frame[3] / 2;\n      var z = this.layoutZOffset * this.guiSys.ZOffsetScale;\n      if (this.parent && this.parent.frame) {\n        x -= this.parent.frame[2] / 2;\n        y += this.parent.frame[3] / 2;\n      }\n\n      if (this.localTransform) {\n        this.matrix.fromArray(this.localTransform);\n        this.matrix.elements[12] += x;\n        this.matrix.elements[13] += y;\n        this.matrix.elements[14] += z;\n      } else {\n        transform.makeTranslation(x + this.localPosition[0], y + this.localPosition[1], z + this.localPosition[2]);\n        this.matrix.multiplyMatrices(transform, this.localRotate);\n      }\n\n      if (this.frameDirty) {\n        this.geometry.dispose();\n        this.geometry = new _VectorGeometry.VectorGeometry([this.frame[2], this.frame[3]], this.borderMaterial.visible ? this.borderWidth : undefined, this.borderRadius, BACKGROUND_MAT_INDEX, IMAGE_MAT_INDEX, BORDER_MAT_INDEX);\n        this.needsUpdate = true;\n        this.frameDirty = false;\n      }\n      this.dirtyGeometry = false;\n    };\n  }(),\n\n  updateBillboard: function (updateContext) {\n    // Similar to Three.js Object3D.lookAt, except view faces the screen\n    // instead of the camera. (Should only be called when not in VR.)\n    var thisPosition = new _ThreeShim2.default.Vector3();\n    var camPosition = new _ThreeShim2.default.Vector3();\n    var camAxisX = new _ThreeShim2.default.Vector3();\n    var camAxisY = new _ThreeShim2.default.Vector3();\n    var camAxisZ = new _ThreeShim2.default.Vector3();\n    var newAxisX = new _ThreeShim2.default.Vector3();\n    var newAxisY = new _ThreeShim2.default.Vector3();\n    var newAxisZ = new _ThreeShim2.default.Vector3();\n    var up = new _ThreeShim2.default.Vector3(0, 1, 0);\n    var rotationMatrix = new _ThreeShim2.default.Matrix4();\n    var parentMatrixWorldInverse = new _ThreeShim2.default.Matrix4();\n    var parentRotationInverse = new _ThreeShim2.default.Matrix4();\n\n    return function (updateContext) {\n      var camMatrixWorld = updateContext.camera.matrixWorld;\n      thisPosition.setFromMatrixPosition(this.matrixWorld);\n      camPosition.setFromMatrixPosition(camMatrixWorld);\n      camMatrixWorld.extractBasis(camAxisX, camAxisY, camAxisZ);\n\n      // we want a world transform that is in the plane of the camera but with the requirement\n      // that the Y axis is always aligned with the world Y axis\n      // therefore Z axis must be that of the camera Z with 0 Y component in that axis\n      // the y Axis is always up\n      newAxisY.copy(up);\n      // the z axis should be the camera axis but with no y component\n      newAxisZ.copy(camAxisZ);\n      newAxisZ.y = 0;\n      newAxisZ.normalize();\n      // from there we compute X\n      newAxisX.crossVectors(newAxisY, newAxisZ).normalize();\n\n      rotationMatrix.identity();\n      var e = rotationMatrix.elements;\n      e[0] = newAxisX.x;\n      e[4] = newAxisY.x;\n      e[8] = newAxisZ.x;\n      e[1] = newAxisX.y;\n      e[5] = newAxisY.y;\n      e[9] = newAxisZ.y;\n      e[2] = newAxisX.z;\n      e[6] = newAxisY.z;\n      e[10] = newAxisZ.z;\n\n      // Convert rotation matrix to our local space.\n      if (this.parent) {\n        parentMatrixWorldInverse.getInverse(this.parent.matrixWorld);\n        parentRotationInverse.extractRotation(parentMatrixWorldInverse);\n        rotationMatrix.multiply(parentRotationInverse);\n      }\n\n      // Set the local rotation to the billboarding rotation.\n      // Overwrites any existing local rotations.\n      this.matrix.extractRotation(rotationMatrix);\n    };\n  }(),\n\n  applyUpdates: function applyUpdates(opacity, updateContext) {\n    this.updateGeometry(updateContext);\n    this.backgroundMaterial.opacity = opacity * this.backgroundOpacity;\n    this.borderMaterial.opacity = opacity * this.borderOpacity;\n    this.imageMaterial.opacity = opacity * this.imageOpacity;\n    this.textMesh.opacity = opacity;\n  },\n\n  setFrame: function setFrame(x, y, width, height, animator) {\n    if (x === this.targetFrame[0] && y === this.targetFrame[1] && width === this.targetFrame[2] && height === this.targetFrame[3]) {\n      return;\n    }\n    this.targetFrame[0] = x;\n    this.targetFrame[1] = y;\n    this.targetFrame[2] = width;\n    this.targetFrame[3] = height;\n    if (animator) {\n      var self = this;\n      var startFrame = [this.frame[0], this.frame[1], this.frame[2], this.frame[3]];\n      var startTime = Date.now();\n      var animState = this.frame[2] === 0 && this.frame[3] === 0 && animator.create ? animator.create : animator.update;\n\n      var frameAnimation = function frameAnimation(curTime) {\n        var deltaTime = curTime - startTime;\n        var dt = animState ? AnimationFunctions[animState.type](Math.min(1, deltaTime / animator.duration)) : 1;\n        var omdt = 1 - dt;\n        self.frame[0] = startFrame[0] * omdt + x * dt;\n        self.frame[1] = startFrame[1] * omdt + y * dt;\n        self.frame[2] = startFrame[2] * omdt + width * dt;\n        self.frame[3] = startFrame[3] * omdt + height * dt;\n        self.dirtyGeometry = true;\n        self.frameDirty = true;\n        if (deltaTime < animator.duration && animState) {\n          self.animatorHandle = self.guiSys.requestFrameFunction(frameAnimation);\n        } else {\n          self.animatorHandle = null;\n        }\n      };\n\n      this.guiSys.cancelFrameFunction(self.animatorHandle);\n      frameAnimation(startTime);\n    } else {\n      this.frame[0] = x;\n      this.frame[1] = y;\n      this.frame[2] = width;\n      this.frame[3] = height;\n      this.dirtyGeometry = true;\n      this.frameDirty = true;\n    }\n  },\n\n  setHitSlop: function setHitSlop(l, t, r, b) {\n    this.hitSlop[0] = l;\n    this.hitSlop[1] = t;\n    this.hitSlop[2] = r;\n    this.hitSlop[3] = b;\n  },\n\n  setCursorVisibilitySlop: function setCursorVisibilitySlop(l, t, r, b) {\n    this.cursorVisibilitySlop[0] = l;\n    this.cursorVisibilitySlop[1] = t;\n    this.cursorVisibilitySlop[2] = r;\n    this.cursorVisibilitySlop[3] = b;\n  },\n\n  setLayoutZOffset: function setLayoutZOffset(offset) {\n    this.layoutZOffset = offset;\n    this.dirtyGeometry = true;\n  },\n\n  setLocalTransform: function setLocalTransform(transform) {\n    this.localTransform = transform.slice();\n    this.dirtyGeometry = true;\n  },\n\n  setLocalRotation: function setLocalRotation(quatOrEuler) {\n    if (quatOrEuler.isEuler) {\n      this.localRotate.makeRotationFromEuler(quatOrEuler);\n    } else {\n      this.localRotate.makeRotationFromQuaternion(quatOrEuler);\n    }\n    this.localTransform = undefined;\n    this.dirtyGeometry = true;\n  },\n\n  setLocalPosition: function setLocalPosition(position) {\n    this.localTransform = undefined;\n    this.localPosition[0] = position[0];\n    this.localPosition[1] = position[1];\n    this.localPosition[2] = position[2];\n    this.dirtyGeometry = true;\n  },\n\n  setImage: function setImage(url, loaded, invisibleTillLoad) {\n    var _this = this;\n\n    if (url) {\n      // Avoid reloading the material if the URL is the same as the one already loaded.\n      if (this.imageMaterial.mapurl === url) {\n        loaded && loaded(true, this.imageMaterial.map.naturalWidth, this.imageMaterial.map.naturalHeight);\n        return;\n      }\n\n      // Unset the existing mapurl and we'll reset it once the image loads successfully.\n      delete this.imageMaterial.mapurl;\n\n      var loader = new _ThreeShim2.default.TextureLoader();\n      loader.setCrossOrigin('Access-Control-Allow-Origin');\n      loader.load(url, function (texture) {\n        /* onLoad */\n        _this.imageMaterial.map = texture;\n        _this.imageMaterial.mapurl = url;\n        // the texture crop may already be set before texture is\n        // loaded, we need to update OffsetRepeat for the texture\n        // to use the texture crop\n        _this.updateOffsetRepeat();\n        _this.imageMaterial.visible = true;\n        _this.imageMaterial.needsUpdate = true;\n        loaded && loaded(true, texture.image.naturalWidth, texture.image.naturalHeight);\n      }, function (xhr) {\n        /* onProgress */\n      }, function (xhr) {\n        /* onError */\n        _this.imageMaterial.map && _this.imageMaterial.map.dispose();\n        _this.imageMaterial.map = undefined;\n        loaded && loaded(false);\n      });\n      this.imageMaterial.visible = !!invisibleTillLoad;\n    } else {\n      this.imageMaterial.map && this.imageMaterial.map.dispose();\n      this.imageMaterial.map = undefined;\n      this.imageMaterial.visible = false;\n      loaded && loaded(false);\n    }\n    this.imageMaterial.needsUpdate = true;\n  },\n\n  // Setting a texture allows us to use CanvasTexture, VideoTexture and other formats.\n  // This also allows us to cache images as textures and reuse them rather than loading them multiple times.\n  setImageTexture: function setImageTexture(texture) {\n    // Unset the texture when it is not specified by the caller\n    if (!texture) {\n      // If our previous texture was an image based texture, detect this using mapurl\n      // and then make sure we dispose of it properly.\n      if (this.imageMaterial.mapurl) {\n        // Dispose of the texture map if its present (it should be unless we raced the download)\n        this.imageMaterial.map && this.imageMaterial.map.dispose();\n\n        // Delete our mapurl so we can load another image based texture later.\n        delete this.imageMaterial.mapurl;\n      }\n\n      // Delete the texture map from our material so it doesn't hang around indefinitely.\n      delete this.imageMaterial.map;\n\n      // Make sure our material is no longer visible.\n      this.imageMaterial.visible = false;\n    } else if (texture instanceof _ThreeShim2.default.Texture || texture.isWebGLRenderTarget) {\n      // Only work with instances of THREE.Texture (including derived types)\n      // We are no longer represented by an image URL so delete the property to prevent later comparison.\n      delete this.imageMaterial.mapurl;\n\n      // This may overwrite an existing texture, but we can't dispose of that texture since there could\n      // be multiple outstanding references to it. Will have to rely on the GC to clean it up in this instance.\n      this.imageMaterial.map = texture;\n\n      // Ensure that dependent properties are recalculated based on the new texture.\n      this.updateOffsetRepeat();\n\n      // Make sure our material is visible.\n      this.imageMaterial.visible = true;\n    } else {\n      throw new Error('Image textures must be of type THREE.Texture');\n    }\n    // We updated the imageMaterial so make sure it gets updated by THREE\n    this.imageMaterial.needsUpdate = true;\n  },\n\n  setClipPlanes: function setClipPlanes(rect) {\n    this.clipPlanes[0].setComponents(1, 0, 0, -rect[0]);\n    this.clipPlanes[1].setComponents(-1, 0, 0, rect[2]);\n    this.clipPlanes[2].setComponents(0, 1, 0, -rect[1]);\n    this.clipPlanes[3].setComponents(0, -1, 0, rect[3]);\n  },\n\n  setImageColor: function setImageColor() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (args[0] == null) {\n      // for undefined and null, reset the color\n      this.imageOpacity = 1.0;\n      this.imageMaterial.color.set(DEFAULT_IMAGE_COLOR);\n    } else {\n      this.imageOpacity = typeof args[0] === 'number' ? (args[0] >> 24 & 0xff) / 255.0 : 1.0;\n      this.imageMaterial.color.set.apply(this.imageMaterial.color, args);\n    }\n    this.imageMaterial.needsUpdate = true;\n  },\n\n  setBackgroundColor: function setBackgroundColor() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    if (args[0] == null) {\n      // for undefined and null, reset the color\n      this.backgroundOpacity = 1.0;\n      this.backgroundMaterial.color.set(DEFAULT_BACKGROUND_COLOR);\n      this.backgroundMaterial.visible = false;\n    } else {\n      this.backgroundOpacity = typeof args[0] === 'number' ? (args[0] >> 24 & 0xff) / 255.0 : 1.0;\n      this.backgroundMaterial.color.set.apply(this.backgroundMaterial.color, args);\n      this.backgroundMaterial.visible = true;\n    }\n    this.backgroundMaterial.needsUpdate = true;\n  },\n\n  setBorderColor: function setBorderColor() {\n    for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    if (args[0] == null) {\n      // for undefined and null, reset the color\n      this.borderOpacity = 1.0;\n      this.borderMaterial.color.set(DEFAULT_BORDER_COLOR);\n    } else {\n      this.borderOpacity = typeof args[0] === 'number' ? (args[0] >> 24 & 0xff) / 255.0 : 1.0;\n      this.borderMaterial.color.set.apply(this.borderMaterial.color, arguments);\n    }\n    this.borderMaterial.needsUpdate = true;\n  },\n\n  setInset: function setInset(inset) {\n    // copy contents of inset\n    this.inset = inset.slice();\n    this.dirtyGeometry = true;\n  },\n\n  setInsetSize: function setInsetSize(insetSize) {\n    // copy contents of insetSize\n    this.insetSize = insetSize.slice();\n    this.dirtyGeometry = true;\n  },\n\n  setBorderWidth: function setBorderWidth(width) {\n    var newValue = void 0;\n    if (typeof width === 'number') {\n      newValue = [width, width, width, width];\n    } else {\n      newValue = width;\n    }\n    if (newValue[0] !== this.borderWidth[0] || newValue[1] !== this.borderWidth[1] || newValue[2] !== this.borderWidth[2] || newValue[3] !== this.borderWidth[3]) {\n      this.borderWidth = newValue.slice();\n      this.borderMaterial.visible = newValue[0] > 0 || newValue[1] > 0 || newValue[2] > 0 || newValue[3] > 0;\n      this.frameDirty = true;\n      this.dirtyGeometry = true;\n    }\n  },\n\n  setBorderRadius: function setBorderRadius(borderRadius) {\n    for (var i = 0; i < 4; i++) {\n      if (this.borderRadius[i] !== borderRadius[i]) {\n        this.borderRadius[i] = borderRadius[i];\n        this.frameDirty = true;\n        this.dirtyGeometry = true;\n      }\n    }\n  },\n\n  setResizeMode: function setResizeMode(resizeModeValue) {\n    var scaleType = (0, _UIViewUtil.resizeModetoScaleType)(resizeModeValue);\n    if (this.scaleType !== scaleType) {\n      this.scaleType = scaleType;\n      this.frameDirty = true;\n      this.dirtyGeometry = true;\n    }\n  },\n\n  setTextureCrop: function setTextureCrop(crop) {\n    // copy contents of crop\n    this.crop = crop.slice();\n    this.updateOffsetRepeat();\n  },\n\n  updateOffsetRepeat: function updateOffsetRepeat() {\n    if (!this.imageMaterial.map) {\n      return;\n    }\n    // In opengl uv coordinate system, [0, 0] is the left-bottom\n    // of the texture, we flip the y here to translate from crop\n    // to uv\n    var offset = new _ThreeShim2.default.Vector2(this.crop[0], 1 - (this.crop[1] + this.crop[3]));\n    var repeat = new _ThreeShim2.default.Vector2(this.crop[2], this.crop[3]);\n    if (this.imageMaterial.map.offset === offset && this.imageMaterial.map.repeat === repeat) {\n      return;\n    }\n    // The uv OffsetRepeat in three.js is set in texture, not material.\n    this.imageMaterial.map.offset = offset;\n    this.imageMaterial.map.repeat = repeat;\n    this.imageMaterial.needsUpdate = true;\n\n    var width = this.imageMaterial.map.image ? this.imageMaterial.map.image.width : 0;\n    var height = this.imageMaterial.map.image ? this.imageMaterial.map.image.height : 0;\n    if (width !== this.textureDim[0] || height !== this.textureDim[0]) {\n      this.textureDim = [width, height];\n      this.frameDirty = true;\n      this.dirtyGeometry = true;\n    }\n  },\n\n  setOpacity: function setOpacity(value) {\n    this.opacity = value;\n    this.visible = value > 0;\n  },\n\n  setAlphaTest: function setAlphaTest(value) {\n    this.imageMaterial.alphaTest = value;\n    this.imageMaterial.needsUpdate = true;\n  },\n\n  setText: function setText(text) {\n    this.text = text;\n    this.textDirty = true;\n    this.dirtyGeometry = true;\n  },\n\n  setTextAlphaCenter: function setTextAlphaCenter(alphaCenter) {\n    this.textFontParms.AlphaCenter = alphaCenter;\n    this.dirtyGeometry = true;\n  },\n\n  setTextColor: function setTextColor(value) {\n    this.textColor.set(value);\n  },\n\n  setTextColorCenter: function setTextColorCenter(colorCenter) {\n    this.textFontParms.ColorCenter = colorCenter;\n    this.dirtyGeometry = true;\n  },\n\n  setTextHAlign: function setTextHAlign(textAlign) {\n    this.textDirty = true;\n    this.textHAlign = textAlign;\n    this.dirtyGeometry = true;\n  },\n\n  setTextLinecount: function setTextLinecount(count) {\n    this.textDirty = true;\n    this.textLinecount = count;\n    this.dirtyGeometry = true;\n  },\n\n  setTextSize: function setTextSize(textSize) {\n    this.textDirty = true;\n    this.textSize = textSize;\n    this.dirtyGeometry = true;\n  },\n\n  setTextVAlign: function setTextVAlign(textAlign) {\n    this.textDirty = true;\n    this.textVAlign = textAlign;\n    this.dirtyGeometry = true;\n  },\n\n  setAutoScale: function setAutoScale(autoScale) {\n    this.autoScale = autoScale;\n  },\n\n  setIsInteractable: function setIsInteractable(isInteractable) {\n    this.isInteractable = isInteractable;\n  },\n\n  setIsMouseInteractable: function setIsMouseInteractable(isMouseInteractable) {\n    this.isMouseInteractable = isMouseInteractable;\n  },\n\n  setPointerEvents: function setPointerEvents(pointerEvents) {\n    this.pointerEvents = pointerEvents;\n  },\n\n  setBillboarding: function setBillboarding(billboarding) {\n    this.billboarding = billboarding;\n  },\n\n  calcWorldClipRect: function calcWorldClipRect() {\n    if (!this.clippingEnabled) {\n      return [0, 0, 16384, 16384];\n    }\n    return [this.matrixWorld.elements[12] - this.frame[2] / 2, this.matrixWorld.elements[13] - this.frame[3] / 2, this.matrixWorld.elements[12] + this.frame[2] / 2, this.matrixWorld.elements[13] + this.frame[3] / 2];\n  },\n\n  setImmediateListener: function setImmediateListener(listener) {\n    this.immediateListener = listener;\n  },\n\n  // This function determine whether this view can be the target of a hit event.\n  shouldAcceptHitEvent: function shouldAcceptHitEvent() {\n    // We do not accept the hit event if this view is not supposed to receive it.\n    return !(this.pointerEvents === _UIViewUtil.PointerEvents.NONE || this.pointerEvents === _UIViewUtil.PointerEvents.BOX_NONE);\n  },\n\n  // This function determine whether this view's subviews can be the target of hit event.\n  shouldInterceptHitEvent: function shouldInterceptHitEvent() {\n    // We intercept the hit event if the subviews are not supposed to receive it.\n    return this.pointerEvents === _UIViewUtil.PointerEvents.NONE || this.pointerEvents === _UIViewUtil.PointerEvents.BOX_ONLY;\n  },\n\n  forceRaycastTest: function forceRaycastTest(enabled) {\n    this.forceRaycastTestEnabled = enabled;\n  },\n\n  // raycasting implementation from THREE.Mesh\n  // We should find a better way of copying this\n  /* eslint-disable */\n  raycast: function () {\n    var inverseMatrix = new _ThreeShim2.default.Matrix4();\n    var ray = new _ThreeShim2.default.Ray();\n\n    var vTL = new _ThreeShim2.default.Vector3();\n    var vTR = new _ThreeShim2.default.Vector3();\n    var vBL = new _ThreeShim2.default.Vector3();\n    var vBR = new _ThreeShim2.default.Vector3();\n\n    function intersectRectangle(frame, slop) {\n      // Create corner verticies with z=0 as this is a 2D rectangle not 3D box.\n      var xMin = -frame[2] / 2 - slop[0];\n      var yMin = -frame[3] / 2 - slop[3];\n      var xMax = frame[2] / 2 + slop[2];\n      var yMax = frame[3] / 2 + slop[1];\n      vTL.fromArray([xMin, yMax, 0]);\n      vTR.fromArray([xMax, yMax, 0]);\n      vBL.fromArray([xMin, yMin, 0]);\n      vBR.fromArray([xMax, yMin, 0]);\n\n      var intersect = ray.intersectTriangle(vTL, vTR, vBR, false, intersectionPoint);\n      intersect = intersect || ray.intersectTriangle(vTL, vBR, vBL, false, intersectionPoint);\n      if (intersect) {\n        var width = xMax - xMin;\n        var height = yMax - yMin;\n        // Normalize intersectionPoint to a 0-1 scale from the top-left corner\n        intersectionNormalized.set((intersectionPoint.x + width / 2) / width, (-intersectionPoint.y + height / 2) / height, 0);\n      }\n      return intersect;\n    }\n\n    var intersectionNormalized = new _ThreeShim2.default.Vector3();\n    var intersectionPoint = new _ThreeShim2.default.Vector3();\n    var intersectionPointWorld = new _ThreeShim2.default.Vector3();\n\n    return function raycast(raycaster, intersects) {\n      var material = this.material;\n\n      if (!this.forceRaycastTestEnabled) {\n        if (material === undefined) return;\n\n        if (this.backgroundMaterial.opacity < 1 / 255 && this.borderMaterial.opacity < 1 / 255 && this.imageMaterial.opacity < 1 / 255) return;\n\n        if (!this.backgroundMaterial.visible && !this.borderMaterial.visible && !this.imageMaterial.visible) return;\n      }\n\n      inverseMatrix.getInverse(this.matrixWorld);\n      ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n\n      var intersect = intersectRectangle(this.frame, this.hitSlop);\n      var isAlmostHit = false;\n      if (!intersect) {\n        // If not intersection with object or hitSlop, check cursorVisibilitySlop\n        var needsUpdate = this.cursorVisibilitySlop[0] > this.hitSlop[0] || this.cursorVisibilitySlop[1] > this.hitSlop[1] || this.cursorVisibilitySlop[2] > this.hitSlop[2] || this.cursorVisibilitySlop[3] > this.hitSlop[3];\n        if (this.guiSys.cursorVisibility === 'auto' && needsUpdate) {\n          intersect = intersectRectangle(this.frame, this.cursorVisibilitySlop);\n        }\n        if (!intersect) {\n          return;\n        }\n        isAlmostHit = true;\n      }\n\n      intersectionPointWorld.copy(intersect);\n      intersectionPointWorld.applyMatrix4(this.matrixWorld);\n\n      var distance = raycaster.ray.origin.distanceTo(intersectionPointWorld);\n\n      if (distance < raycaster.near || distance > raycaster.far) return;\n\n      intersects.push({\n        distance: distance,\n        point: intersectionPointWorld.clone(),\n        object: this,\n        isAlmostHit: isAlmostHit,\n        uv: intersectionNormalized.clone()\n      });\n    };\n  }(),\n  /* eslint-enable */\n\n  clone: function clone() {\n    return new this.constructor(this.material).copy(this);\n  },\n\n  dispose: function dispose() {\n    if (this.geometry) {\n      this.geometry.dispose();\n      this.geometry = null;\n    }\n    if (this.material) {\n      this.material.dispose();\n      this.material = null;\n    }\n  }\n});","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.vgRoundedBorderRectVarying = vgRoundedBorderRectVarying;\nexports.vgGenerateIndicesBorder = vgGenerateIndicesBorder;\nexports.VectorGeometry = VectorGeometry;\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /**\n                                                                                                                                                                                                     * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                     * All rights reserved.\n                                                                                                                                                                                                     *\n                                                                                                                                                                                                     * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                     * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                     * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                     */\n\n/**\n * Util functions for generation of vector geomtry used typically used in css borders etc\n * Elements based on nanovg https://github.com/memononen/nanovg\n * Further functions based on work in shell\n **/\n\nvar VG_MOVETO = 0;\nvar VG_LINETO = 1;\nvar VG_BEZIERTO = 2;\n\nvar VG_KAPPA90 = 0.5522847493;\n\nfunction vgAddPoint(geom, pt) {\n  var _geom$positions;\n\n  /*  if (geom.length > 0) {\n    let last_pt = geom[geom.length - 1];\n    let dx = last_pt[0] - pt[0];\n    let dy = last_pt[1] - pt[1];\n    let dist = (dx * dx) + (dy * dy);\n    if (dist < 0.01) {\n      return;\n    }\n  }*/\n  (_geom$positions = geom.positions).push.apply(_geom$positions, _toConsumableArray(pt));\n  geom.positions.push(0);\n}\n\nfunction vgAddPointBorder(geom, ptA, ptB) {\n  var _geom$positions2, _geom$positions3;\n\n  /*  if (geom.length > 0) {\n    let last_pt = geom[geom.length - 2];\n    let dx = last_pt[0] - ptA[0];\n    let dy = last_pt[1] - ptA[1];\n    let dist = (dx * dx) + (dy * dy);\n    if (dist < 0.01) {\n      return;\n    }\n  }*/\n  (_geom$positions2 = geom.positions).push.apply(_geom$positions2, _toConsumableArray(ptA));\n  geom.positions.push(0);\n  (_geom$positions3 = geom.positions).push.apply(_geom$positions3, _toConsumableArray(ptB));\n  geom.positions.push(0);\n}\n\nfunction vgTesselateBezier(geom, x1, y1, x2, y2, x3, y3, x4, y4, level) {\n  if (level > 10) {\n    return;\n  }\n\n  var x12 = (x1 + x2) * 0.5;\n  var y12 = (y1 + y2) * 0.5;\n  var x23 = (x2 + x3) * 0.5;\n  var y23 = (y2 + y3) * 0.5;\n  var x34 = (x3 + x4) * 0.5;\n  var y34 = (y3 + y4) * 0.5;\n  var x123 = (x12 + x23) * 0.5;\n  var y123 = (y12 + y23) * 0.5;\n\n  var dx = x4 - x1;\n  var dy = y4 - y1;\n  var d2 = Math.abs((x2 - x4) * dy - (y2 - y4) * dx);\n  var d3 = Math.abs((x3 - x4) * dy - (y3 - y4) * dx);\n\n  var magSqD = (dx * dx + dy * dy) * 0.0001;\n\n  if (magSqD <= 0 || (d2 + d3) * (d2 + d3) < magSqD) {\n    vgAddPoint(geom, [x4, y4]);\n    return;\n  }\n\n  var x234 = (x23 + x34) * 0.5;\n  var y234 = (y23 + y34) * 0.5;\n  var x1234 = (x123 + x234) * 0.5;\n  var y1234 = (y123 + y234) * 0.5;\n\n  vgTesselateBezier(geom, x1, y1, x12, y12, x123, y123, x1234, y1234, level + 1);\n  vgTesselateBezier(geom, x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1);\n}\n\nfunction vgTesselateBezierBorder(geom, x1A, y1A, x2A, y2A, x3A, y3A, x4A, y4A, x1B, y1B, x2B, y2B, x3B, y3B, x4B, y4B, level) {\n  if (level > 10) {\n    return;\n  }\n\n  var x12A = (x1A + x2A) * 0.5;\n  var y12A = (y1A + y2A) * 0.5;\n  var x23A = (x2A + x3A) * 0.5;\n  var y23A = (y2A + y3A) * 0.5;\n  var x34A = (x3A + x4A) * 0.5;\n  var y34A = (y3A + y4A) * 0.5;\n  var x123A = (x12A + x23A) * 0.5;\n  var y123A = (y12A + y23A) * 0.5;\n\n  var dxA = x4A - x1A;\n  var dyA = y4A - y1A;\n  var d2A = Math.abs((x2A - x4A) * dyA - (y2A - y4A) * dxA);\n  var d3A = Math.abs((x3A - x4A) * dyA - (y3A - y4A) * dxA);\n\n  var magSqD = (dxA * dxA + dyA * dyA) * 0.0001;\n\n  if (magSqD <= 0 || (d2A + d3A) * (d2A + d3A) < magSqD) {\n    vgAddPoint(geom, [x4A, y4A]);\n    vgAddPoint(geom, [x4B, y4B]);\n    return;\n  }\n\n  var x234A = (x23A + x34A) * 0.5;\n  var y234A = (y23A + y34A) * 0.5;\n  var x1234A = (x123A + x234A) * 0.5;\n  var y1234A = (y123A + y234A) * 0.5;\n\n  var x12B = (x1B + x2B) * 0.5;\n  var y12B = (y1B + y2B) * 0.5;\n  var x23B = (x2B + x3B) * 0.5;\n  var y23B = (y2B + y3B) * 0.5;\n  var x34B = (x3B + x4B) * 0.5;\n  var y34B = (y3B + y4B) * 0.5;\n  var x123B = (x12B + x23B) * 0.5;\n  var y123B = (y12B + y23B) * 0.5;\n\n  var x234B = (x23B + x34B) * 0.5;\n  var y234B = (y23B + y34B) * 0.5;\n  var x1234B = (x123B + x234B) * 0.5;\n  var y1234B = (y123B + y234B) * 0.5;\n\n  vgTesselateBezierBorder(geom, x1A, y1A, x12A, y12A, x123A, y123A, x1234A, y1234A, x1B, y1B, x12B, y12B, x123B, y123B, x1234B, y1234B, level + 1);\n  vgTesselateBezierBorder(geom, x1234A, y1234A, x234A, y234A, x34A, y34A, x4A, y4A, x1234B, y1234B, x234B, y234B, x34B, y34B, x4B, y4B, level + 1);\n}\n\nfunction vgFlattenPaths(commands, w, h) {\n  var geom = { positions: [] };\n  var i = 0;\n  var p = void 0,\n      last = void 0;\n  var cp1 = void 0,\n      cp2 = void 0;\n  while (i < commands.length) {\n    var cmd = commands[i];\n    switch (cmd) {\n      case VG_MOVETO:\n        p = commands[i + 1];\n        vgAddPoint(geom, p);\n        i += 2;\n        break;\n      case VG_LINETO:\n        p = commands[i + 1];\n        vgAddPoint(geom, p);\n        i += 2;\n        break;\n      case VG_BEZIERTO:\n        last = geom.positions.length - 1 * 3;\n        cp1 = commands[i + 1];\n        cp2 = commands[i + 2];\n        p = commands[i + 3];\n        vgTesselateBezier(geom, geom.positions[last + 0], geom.positions[last + 1], cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1], 0);\n        i += 4;\n        break;\n    }\n  }\n  if (geom.length > 1) {\n    var last_pt = geom.positions.length - 1 * 3;\n    var dx = geom.positions[last_pt + 0] - geom.positions[0];\n    var dy = geom.positions[last_pt + 1] - geom.positions[1];\n    var dist = dx * dx + dy * dy;\n    if (dist < 0.001) {\n      geom.length -= 1;\n    }\n  }\n\n  var uvs = [];\n  if (w > 0 && h > 0) {\n    for (var _i = 0; _i < geom.positions.length; _i += 3) {\n      uvs.push(geom.positions[_i + 0] / w + 0.5);\n      uvs.push(geom.positions[_i + 1] / h + 0.5);\n    }\n  } else {\n    for (var _i2 = 0; _i2 < geom.positions.length; _i2 += 3) {\n      uvs.push(0);\n      uvs.push(0);\n    }\n  }\n  geom.uvs = uvs;\n  return geom;\n}\n\nfunction vgFlattenPathsBorder(commands, w, h) {\n  var geom = { positions: [] };\n  var i = 0;\n  var pA = void 0,\n      lastA = void 0;\n  var pB = void 0,\n      lastB = void 0;\n  var cp1A = void 0,\n      cp2A = void 0;\n  var cp1B = void 0,\n      cp2B = void 0;\n  while (i < commands.length) {\n    var cmd = commands[i];\n    switch (cmd) {\n      case VG_MOVETO:\n        pA = commands[i + 1];\n        i += 2;\n        pB = commands[i + 1];\n        vgAddPointBorder(geom, pA, pB);\n        i += 2;\n        break;\n      case VG_LINETO:\n        pA = commands[i + 1];\n        i += 2;\n        pB = commands[i + 1];\n        vgAddPointBorder(geom, pA, pB);\n        i += 2;\n        break;\n      case VG_BEZIERTO:\n        lastA = geom.positions.length - 2 * 3;\n        lastB = geom.positions.length - 1 * 3;\n        cp1A = commands[i + 1];\n        cp2A = commands[i + 2];\n        pA = commands[i + 3];\n        i += 4;\n        cp1B = commands[i + 1];\n        cp2B = commands[i + 2];\n        pB = commands[i + 3];\n        vgTesselateBezierBorder(geom, geom.positions[lastA + 0], geom.positions[lastA + 1], cp1A[0], cp1A[1], cp2A[0], cp2A[1], pA[0], pA[1], geom.positions[lastB + 0], geom.positions[lastB + 1], cp1B[0], cp1B[1], cp2B[0], cp2B[1], pB[0], pB[1], 0);\n        i += 4;\n        break;\n    }\n  }\n\n  var uvs = [];\n  if (w > 0 && h > 0) {\n    for (var _i3 = 0; _i3 < geom.positions.length; _i3 += 3) {\n      uvs.push(geom.positions[_i3 + 0] / w + 0.5);\n      uvs.push(geom.positions[_i3 + 1] / h + 0.5);\n    }\n  } else {\n    for (var _i4 = 0; _i4 < geom.positions.length; _i4 += 3) {\n      uvs.push(0);\n      uvs.push(0);\n    }\n  }\n  geom.uvs = uvs;\n  return geom;\n}\n\nfunction vgRect(x, y, w, h) {\n  var vals = [VG_MOVETO, [x, y], VG_LINETO, [x, y + h], VG_LINETO, [x + w, y + h], VG_LINETO, [x + w, y]];\n  return vgFlattenPaths(vals, w, h);\n}\n\nfunction vgRoundedRectVarying(x, y, w, h, radBottomRight, radBottomLeft, radTopLeft, radTopRight) {\n  if (radTopLeft < 0.001 && radTopRight < 0.001 && radBottomRight < 0.001 && radBottomLeft < 0.001) {\n    return vgRect(x, y, w, h);\n  } else {\n    var halfw = Math.abs(w) * 0.5;\n    var halfh = Math.abs(h) * 0.5;\n    var rxBL = Math.min(radBottomLeft, halfw);\n    var ryBL = Math.min(radBottomLeft, halfh);\n    var rxBR = Math.min(radBottomRight, halfw);\n    var ryBR = Math.min(radBottomRight, halfh);\n    var rxTR = Math.min(radTopRight, halfw);\n    var ryTR = Math.min(radTopRight, halfh);\n    var rxTL = Math.min(radTopLeft, halfw);\n    var ryTL = Math.min(radTopLeft, halfh);\n    var vals = [VG_MOVETO, [x, y + ryTL], VG_LINETO, [x, y + h - ryBL], VG_BEZIERTO, [x, y + h - ryBL * (1 - VG_KAPPA90)], [x + rxBL * (1 - VG_KAPPA90), y + h], [x + rxBL, y + h], VG_LINETO, [x + w - rxBR, y + h], VG_BEZIERTO, [x + w - rxBR * (1 - VG_KAPPA90), y + h], [x + w, y + h - ryBR * (1 - VG_KAPPA90)], [x + w, y + h - ryBR], VG_LINETO, [x + w, y + ryTR], VG_BEZIERTO, [x + w, y + ryTR * (1 - VG_KAPPA90)], [x + w - rxTR * (1 - VG_KAPPA90), y], [x + w - rxTR, y], VG_LINETO, [x + rxTL, y], VG_BEZIERTO, [x + rxTL * (1 - VG_KAPPA90), y], [x, y + ryTL * (1 - VG_KAPPA90)], [x, y + ryTL]];\n    return vgFlattenPaths(vals, w, h);\n  }\n}\n\nfunction vgGenerateIndicesConvex(length) {\n  var indices = [];\n  for (var i = 2; i < length; i++) {\n    indices.push(0);\n    indices.push(i - 1);\n    indices.push(i);\n  }\n  return indices;\n}\n\n/*\n * Inner and Outer geometry\n * path vertices are always in pairs to simplify the tesselation\n */\nfunction vgRoundedBorderRectVarying(baseX, baseY, width, height, borderLeft, borderBottom, borderRight, borderTop, radBottomRight, radBottomLeft, radTopLeft, radTopRight) {\n  var x = Math.min(width, borderLeft);\n  var w = Math.max(x, width - borderRight) - x;\n  var y = Math.min(height, borderTop);\n  var h = Math.max(y, height - borderBottom) - y;\n  if (radTopLeft < 0.001 && radTopRight < 0.001 && radBottomRight < 0.001 && radBottomLeft < 0.001) {\n    var vals = [VG_MOVETO, [baseX, baseY], VG_MOVETO, [baseX + x, baseY + y], VG_LINETO, [baseX, baseY + height], VG_LINETO, [baseX + x, baseY + y + h], VG_LINETO, [baseX + width, baseY + height], VG_LINETO, [baseX + x + w, baseY + y + h], VG_LINETO, [baseX + width, baseY], VG_LINETO, [baseX + x + w, baseY + y]];\n    return vgFlattenPathsBorder(vals);\n  } else {\n    var halfWidth = width * 0.5;\n    var halfHeight = height * 0.5;\n    var halfW = w * 0.5;\n    var halfH = h * 0.5;\n    var rxBLOuter = Math.min(radBottomLeft, halfWidth);\n    var ryBLOuter = Math.min(radBottomLeft, halfHeight);\n    var rxBROuter = Math.min(radBottomRight, halfWidth);\n    var ryBROuter = Math.min(radBottomRight, halfHeight);\n    var rxTROuter = Math.min(radTopRight, halfWidth);\n    var ryTROuter = Math.min(radTopRight, halfHeight);\n    var rxTLOuter = Math.min(radTopLeft, halfWidth);\n    var ryTLOuter = Math.min(radTopLeft, halfHeight);\n    var rxBLInner = Math.min(radBottomLeft, halfW);\n    var ryBLInner = Math.min(radBottomLeft, halfH);\n    var rxBRInner = Math.min(radBottomRight, halfW);\n    var ryBRInner = Math.min(radBottomRight, halfH);\n    var rxTRInner = Math.min(radTopRight, halfW);\n    var ryTRInner = Math.min(radTopRight, halfH);\n    var rxTLInner = Math.min(radTopLeft, halfW);\n    var ryTLInner = Math.min(radTopLeft, halfH);\n\n    var _vals = [VG_MOVETO, [baseX, baseY + ryTLOuter], VG_MOVETO, [baseX + x, baseY + y + ryTLInner], VG_LINETO, [baseX, baseY + height - ryBLOuter], VG_LINETO, [baseX + x, baseY + y + h - ryBLInner], VG_BEZIERTO, [baseX, baseY + height - ryBLOuter * (1 - VG_KAPPA90)], [baseX + rxBLOuter * (1 - VG_KAPPA90), baseY + height], [baseX + rxBLOuter, baseY + height], VG_BEZIERTO, [baseX + x, baseY + y + h - ryBLInner * (1 - VG_KAPPA90)], [baseX + x + rxBLInner * (1 - VG_KAPPA90), baseY + y + h], [baseX + x + rxBLInner, baseY + y + h], VG_LINETO, [baseX + width - rxBROuter, baseY + height], VG_LINETO, [baseX + x + w - rxBRInner, baseY + y + h], VG_BEZIERTO, [baseX + width - rxBROuter * (1 - VG_KAPPA90), baseY + height], [baseX + width, baseY + height - ryBROuter * (1 - VG_KAPPA90)], [baseX + width, baseY + height - ryBROuter], VG_BEZIERTO, [baseX + x + w - rxBRInner * (1 - VG_KAPPA90), baseY + y + h], [baseX + x + w, baseY + y + h - ryBRInner * (1 - VG_KAPPA90)], [baseX + x + w, baseY + y + h - ryBRInner], VG_LINETO, [baseX + width, baseY + ryTROuter], VG_LINETO, [baseX + x + w, baseY + y + ryTRInner], VG_BEZIERTO, [baseX + width, baseY + ryTROuter * (1 - VG_KAPPA90)], [baseX + width - rxTROuter * (1 - VG_KAPPA90), baseY], [baseX + width - rxTROuter, baseY], VG_BEZIERTO, [baseX + x + w, baseY + y + ryTRInner * (1 - VG_KAPPA90)], [baseX + x + w - rxTRInner * (1 - VG_KAPPA90), baseY + y], [baseX + x + w - rxTRInner, baseY + y], VG_LINETO, [baseX + rxTLOuter, baseY], VG_LINETO, [baseX + x + rxTLInner, baseY + y], VG_BEZIERTO, [baseX + rxTLOuter * (1 - VG_KAPPA90), baseY], [baseX, baseY + ryTLOuter * (1 - VG_KAPPA90)], [baseX, baseY + ryTLOuter], VG_BEZIERTO, [baseX + x + rxTLInner * (1 - VG_KAPPA90), baseY + y], [baseX + x, baseY + y + ryTLInner * (1 - VG_KAPPA90)], [baseX + x, baseY + y + ryTLInner]];\n    return vgFlattenPathsBorder(_vals);\n  }\n}\n\nfunction vgGenerateIndicesBorder(offset, length) {\n  var indices = [];\n  for (var i = 0; i < length; i += 2) {\n    var nexti = (i + 2) % length;\n    indices.push(i + offset);\n    indices.push(nexti + offset);\n    indices.push(i + 1 + offset);\n    indices.push(i + 1 + offset);\n    indices.push(nexti + offset);\n    indices.push(nexti + 1 + offset);\n  }\n  return indices;\n}\n\nfunction VectorGeometry(dims, borderWidth, borderRadius, backgroundIndex, foregroundIndex, borderIndex) {\n  _ThreeShim2.default.BufferGeometry.apply(this);\n\n  dims = dims || [1, 1];\n\n  var geom = vgRoundedRectVarying(-dims[0] * 0.5, -dims[1] * 0.5, dims[0], dims[1], borderRadius[0], borderRadius[1], borderRadius[2], borderRadius[3]);\n  var indices = vgGenerateIndicesConvex(geom.positions.length / 3);\n  var baseIndices = indices.length;\n  if (borderWidth) {\n    var borderGeom = vgRoundedBorderRectVarying(-dims[0] * 0.5, -dims[1] * 0.5, dims[0], dims[1], borderWidth[0], borderWidth[1], borderWidth[2], borderWidth[3], borderRadius[0], borderRadius[1], borderRadius[2], borderRadius[3]);\n    var borderIndices = vgGenerateIndicesBorder(geom.positions.length / 3, borderGeom.positions.length / 3);\n    geom.positions = geom.positions.concat(borderGeom.positions);\n    geom.uvs = geom.uvs.concat(borderGeom.uvs);\n    indices = indices.concat(borderIndices);\n  }\n\n  this.addAttribute('position', new _ThreeShim2.default.BufferAttribute(new Float32Array(geom.positions), 3));\n  this.addAttribute('uv', new _ThreeShim2.default.BufferAttribute(new Float32Array(geom.uvs), 2));\n  this.addGroup(0, baseIndices, backgroundIndex);\n  this.addGroup(0, baseIndices, foregroundIndex);\n  if (borderWidth) {\n    this.addGroup(baseIndices, indices.length - baseIndices, borderIndex);\n  }\n  this.setIndex(new _ThreeShim2.default.BufferAttribute(new Uint32Array(indices), 1));\n  this.needsUpdate = true;\n  this.computeBoundingSphere();\n}\n\nVectorGeometry.prototype = Object.create(_ThreeShim2.default.BufferGeometry.prototype);\nVectorGeometry.prototype.constructor = VectorGeometry;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\nvar _AppControls = require('../Control/AppControls');\n\nvar _AppControls2 = _interopRequireDefault(_AppControls);\n\nvar _OculusPlayer = require('./OculusPlayer');\n\nvar _Overlay = require('./Overlay');\n\nvar _Overlay2 = _interopRequireDefault(_Overlay);\n\nvar _ThreeShim = require('../ThreeShim');\n\nvar _ThreeShim2 = _interopRequireDefault(_ThreeShim);\n\nvar _setStyles = require('./setStyles');\n\nvar _setStyles2 = _interopRequireDefault(_setStyles);\n\nvar _VREffect = require('../Control/VREffect');\n\nvar _VREffect2 = _interopRequireDefault(_VREffect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar isMobile = /Mobi/i.test(navigator.userAgent);\nvar isAndroid = /Android/i.test(navigator.userAgent);\nvar isSamsung = isAndroid && /SM-[GN]/i.test(navigator.userAgent);\nvar fullscreenEvent = 'fullscreenchange';\nif (!('onfullscreenchange' in document)) {\n  if ('onwebkitfullscreenchange' in document) {\n    fullscreenEvent = 'webkitfullscreenchange';\n  } else if ('onmozfullscreenchange' in document) {\n    fullscreenEvent = 'mozfullscreenchange';\n  } else if ('onmsfullscreenchange' in document) {\n    fullscreenEvent = 'msfullscreenchange';\n  }\n}\n\nfunction isVRBrowser() {\n  return 'VRDisplay' in window;\n}\n\nvar FALLBACK_STYLES = {\n  backgroundColor: '#000000',\n  cursor: 'not-allowed',\n  position: 'relative'\n};\nvar FALLBACK_MESSAGE_STYLES = {\n  background: 'rgba(0, 0, 0, 0.7)',\n  border: '2px solid #ffffff',\n  borderRadius: '5px',\n  color: '#ffffff',\n  fontFamily: 'Helvetica, Arial, sans-serif',\n  fontSize: '16px',\n  fontWeight: 'normal',\n  left: '50%',\n  padding: '10px',\n  position: 'absolute',\n  textAlign: 'center',\n  top: '50%',\n  transform: 'translate(-50%, -50%)',\n  width: '190px'\n};\n\n/**\n * Detect if WebGL is supported and enabled by the current browser\n */\nfunction isWebGLSupported() {\n  var canvas = document.createElement('canvas');\n  var gl = null;\n  try {\n    gl = canvas.getContext('webgl');\n  } catch (e) {}\n  if (gl) {\n    return true;\n  }\n  try {\n    // IE exposes WebGL 1.0 via 'experimental-webgl'\n    gl = canvas.getContext('experimental-webgl');\n  } catch (e) {}\n  return !!gl;\n}\n\nfunction isMobileInLandscapeOrientation() {\n  // functionality required for mobile only\n  if (!isMobile) {\n    return false;\n  }\n\n  // use draft screen.orientation type to determine if mobile is landscape orientation\n  var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation;\n  if (orientation) {\n    if (orientation.type === 'landscape-primary' || orientation.type === 'landscape-secondary') {\n      return true;\n    } else if (orientation.type === 'portrait-secondary' || orientation.type === 'portrait-primary') {\n      return false;\n    }\n  }\n\n  // fall back to window.orientation\n  if (!window.orientation) {\n    return false;\n  }\n  var quadrant = Math.round(window.orientation / 90);\n  while (quadrant < 0) {\n    quadrant += 4;\n  }\n  while (quadrant >= 4) {\n    quadrant -= 4;\n  }\n  return quadrant === 1 || quadrant === 3;\n}\n\n/**\n * A Player wraps most of the boilerplate of setting up an embedded VR\n * experience. It constructs a Three.js renderer, and attaches it to the\n * supplied DOM node. It also takes a Camera, which it orients via controls\n * that are enhanced for the current viewing platform. It has a method to\n * render a Three.js scene. If a DOM node or camera are not provided,\n * default values are used.\n */\n\nvar Player = function () {\n\n  /**\n   * Set up the DOM wrapper for a player, as well as the Three.js Renderer\n   * and camera controls, and attach them to the specified place in the DOM.\n   * Creates a default camera if none is provided.\n   * @param options - An optional set of configuration values:\n   *   disableTouchPanning: disable touch to pan camera on mobile. Defaults to false.\n   *   elementOrId: the DOM location to mount the player. Can either be a DOM\n   *   node, or the string id of a DOM node. Defaults to document.body\n   *   camera: A Three.js Camera, to be used with the 3d renderer.\n   *   antialias: Enable antialiasing on the WebGLRenderer. Default is true.\n   *   width: the width of the player, defaults to the width of the container\n   *   height: the height of the player, defaults to the height of the container\n   *   pixelRatio: the pixelRatio of device, defaults to window.devicePixelRatio\n   */\n  function Player() {\n    var _this = this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Player);\n\n    // Autobind event handlers\n    this.attemptEnterVR = this.attemptEnterVR.bind(this);\n    this.attemptEnterFullscreen = this.attemptEnterFullscreen.bind(this);\n    this.onDisplayActivate = this.onDisplayActivate.bind(this);\n    this.onDisplayDeactivate = this.onDisplayDeactivate.bind(this);\n    this.onDisplayConnect = this.onDisplayConnect.bind(this);\n    this.onDisplayDisconnect = this.onDisplayDisconnect.bind(this);\n    this.handleFullscreenChange = this.handleFullscreenChange.bind(this);\n    this.exitVR = this.exitVR.bind(this);\n    this.resetAngles = this.resetAngles.bind(this);\n    this.handlePointerRestricted = this.handlePointerRestricted.bind(this);\n    this.handlePointerUnrestricted = this.handlePointerUnrestricted.bind(this);\n\n    this.isMobile = isMobile;\n    this.allowCarmelDeeplink = !!options.allowCarmelDeeplink && isSamsung;\n    this.calculateVerticalFOV = options.calculateVerticalFOV;\n\n    // Options passed to AppControls contructor.\n    this.controlOptions = { disableTouchPanning: !!options.disableTouchPanning };\n\n    var width = options.width;\n    var height = options.height;\n    var pixelRatio = options.pixelRatio;\n    var el = void 0;\n    if (typeof options.elementOrId === 'string') {\n      var id = options.elementOrId;\n      var elementById = document.getElementById(id);\n      if (!elementById) {\n        throw new Error('No DOM element with id: ' + id);\n      }\n      el = elementById;\n    } else {\n      el = options.elementOrId;\n    }\n    var camera = options.camera;\n\n    // If container not specified, default to full window.\n    if (!el) {\n      var body = document.body;\n      if (!body) {\n        throw new Error('Cannot automatically attach the Player to a document with no body');\n      }\n      el = body;\n    }\n    this._el = el;\n    // If height and width are not provided, detect them from the container.\n    var fixedSize = true;\n    if (!width) {\n      if (this._el === document.body) {\n        fixedSize = false;\n        width = window.innerWidth;\n      } else {\n        width = this._el.clientWidth;\n      }\n    }\n    if (!height) {\n      if (this._el === document.body) {\n        fixedSize = false;\n        height = window.innerHeight;\n      } else {\n        height = this._el.clientHeight;\n      }\n    }\n    if (!pixelRatio) {\n      this.fixedPixelRatio = false;\n      pixelRatio = window.devicePixelRatio || 1;\n    } else {\n      this.fixedPixelRatio = true;\n    }\n\n    // After adjusting our player sized for a container element, update our canvas size.\n    this.width = width;\n    this.height = height;\n    this.pixelRatio = pixelRatio;\n\n    // If we our size was not explicitly specified and we are contained within the body\n    // of the document, then attach a listener to detect window resizes to update our canvas size.\n    // Our body check is redundant but in place to protect against future code changes that\n    // might change our assumptions about the relation of fixedSize and our container.\n    if (!fixedSize && this._el === document.body) {\n      this.addResizeHandler();\n    }\n\n    // If no camera given, use default Three.js setup.\n    if (camera) {\n      this._camera = camera;\n    } else {\n      // Use a single eye camera with a normal FoV but set the depthNear/depthFar\n      // based on our spec defaults to prevent browser renders differing from our\n      // VRDisplay renders.\n      var fov = void 0;\n      if (isMobileInLandscapeOrientation()) {\n        // clamp range of fov to be reasonable\n        fov = Math.max(30, Math.min(70, 60 / (width / height)));\n      } else {\n        fov = 60;\n      }\n      if (typeof this.calculateVerticalFOV === 'function') {\n        fov = this.calculateVerticalFOV(width, height);\n      }\n      this._camera = new _ThreeShim2.default.PerspectiveCamera(fov, width / height, 0.01, 10000.0);\n    }\n    this._initialAngles = {\n      x: this._camera.rotation.x,\n      y: this._camera.rotation.y,\n      z: this._camera.rotation.z\n    };\n    this._lastAngle = this._camera.rotation.y;\n\n    if (!isWebGLSupported()) {\n      // If WebGL isn't supported, don't try to build the player\n      this.renderFallback(width, height);\n      return this;\n    }\n\n    // Set up the Three.js basics: renderer, camera, controls\n    var antialias = options.hasOwnProperty('antialias') ? options.antialias : true;\n    var alpha = options.hasOwnProperty('canvasAlpha') ? options.canvasAlpha : true;\n    var renderer = new _ThreeShim2.default.WebGLRenderer({\n      antialias: antialias,\n      alpha: alpha\n    });\n    renderer.setPixelRatio(pixelRatio);\n    renderer.setSize(width, height);\n    renderer.setClearColor(0x000000);\n    this.glRenderer = renderer;\n    this.controls = new _AppControls2.default(this._camera, this.glRenderer.domElement, this.controlOptions);\n    this.onEnterVR = options.onEnterVR;\n    this.onExitVR = options.onExitVR;\n\n    // Create an Overlay, which places some interactive controls on top of\n    // the rendering canvas\n    var overlay = new _Overlay2.default({\n      vrButtonHandler: this.attemptEnterVR,\n      fullscreenButtonHandler: this.attemptEnterFullscreen,\n      hideCompass: options.hideCompass,\n      hideFullscreen: options.hideFullscreen,\n      resetAngles: this.resetAngles\n    });\n    this.overlay = overlay;\n\n    // Create a wrapper containing the canvas and the overlay\n    var wrapper = document.createElement('div');\n    this._wrapper = wrapper;\n    (0, _setStyles2.default)(wrapper, {\n      width: width + 'px',\n      height: height + 'px',\n      position: 'relative',\n      cursor: 'grab'\n    });\n    if (wrapper.style.cursor === '') {\n      wrapper.style.cursor = '-webkit-grab';\n      if (wrapper.style.cursor === '') {\n        wrapper.style.cursor = '-moz-grab';\n      }\n    }\n    wrapper.appendChild(overlay.domElement);\n    wrapper.appendChild(renderer.domElement);\n\n    // Attach the player to the DOM\n    this._el.appendChild(wrapper);\n\n    // Hide the gyro glyph when the user first interacts with the player\n    var hideAndCleanUp = function hideAndCleanUp() {\n      wrapper.removeEventListener('mouseover', hideAndCleanUp);\n      wrapper.removeEventListener('touchstart', hideAndCleanUp);\n      _this.overlay.hideGyro();\n    };\n    wrapper.addEventListener('mouseover', hideAndCleanUp);\n    wrapper.addEventListener('touchstart', hideAndCleanUp);\n    if (isMobile) {\n      // If it's mobile, we may not get any direct touches, so hide the gyro\n      // after some delay\n      setTimeout(hideAndCleanUp, 4000);\n    }\n    this._compass = new _ThreeShim2.default.Vector3();\n\n    // Create a buffer for recording VRFrameData, if supported\n    this.frameData = null;\n    if ('VRFrameData' in window) {\n      this.frameData = new VRFrameData();\n    }\n\n    // If the VR device is capable of telling the browser that it has been\n    // activated (put on someone's head), we use this as a secondary\n    // enter/exit scheme in addition to the button on the Overlay\n    window.addEventListener('vrdisplayactivate', this.onDisplayActivate);\n    window.addEventListener('vrdisplaydeactivate', this.onDisplayDeactivate);\n    // Listen for headsets that connect / disconnect after the page has loaded\n    window.addEventListener('vrdisplayconnect', this.onDisplayConnect);\n    window.addEventListener('vrdisplaydisconnect', this.onDisplayDisconnect);\n    // Listen for pointer becoming restricted / unrestricted\n    window.addEventListener('vrdisplaypointerrestricted', this.handlePointerRestricted);\n    window.addEventListener('vrdisplaypointerunrestricted', this.handlePointerUnrestricted);\n\n    // Detect any VR displays, so that we can pick the proper rAF and render\n    this.initializeDisplay();\n  }\n\n  /**\n   * Handles taking ponterlock in response to pointer input being restricted\n   */\n\n\n  _createClass(Player, [{\n    key: 'handlePointerRestricted',\n    value: function handlePointerRestricted() {\n      var pointerLockElement = this.glRenderer.domElement;\n      if (pointerLockElement && typeof pointerLockElement.requestPointerLock === 'function') {\n        pointerLockElement.requestPointerLock();\n      }\n    }\n\n    /**\n     * Handles releasing ponterlock in response to pointer input being unrestricted\n     */\n\n  }, {\n    key: 'handlePointerUnrestricted',\n    value: function handlePointerUnrestricted() {\n      // $FlowFixMe\n      var currentPointerLockElement = document.pointerLockElement;\n      var expectedPointerLockElement = this.glRenderer.domElement;\n      if (currentPointerLockElement && currentPointerLockElement === expectedPointerLockElement && typeof document.exitPointerLock === 'function') {\n        document.exitPointerLock();\n      }\n    }\n\n    /**\n     * When WebGL is unsupported or disabled, render an error message.\n     * @param width - The width of the parent container\n     * @param height - The height of the parent container\n     */\n\n  }, {\n    key: 'renderFallback',\n    value: function renderFallback(width, height) {\n      var fallback = document.createElement('div');\n      (0, _setStyles2.default)(fallback, FALLBACK_STYLES);\n      (0, _setStyles2.default)(fallback, {\n        width: width + 'px',\n        height: height + 'px'\n      });\n      var message = document.createElement('div');\n      message.appendChild(document.createTextNode('The current browser does not support WebGL.'));\n      (0, _setStyles2.default)(message, FALLBACK_MESSAGE_STYLES);\n      fallback.appendChild(message);\n      this._el.appendChild(fallback);\n    }\n\n    /**\n     * Perform per-frame updates. Should be called within the animation loop.\n     * Distinct from render() so app can do its own operations after the\n     * camera is updated but before the scene is rendered, for example update\n     * a gaze cursor.\n     */\n\n  }, {\n    key: 'frame',\n    value: function frame() {\n      var frameOptions = {};\n      if (this.frameData && this.vrDisplay && this.vrDisplay.isPresenting) {\n        this.vrDisplay.getFrameData(this.frameData);\n        frameOptions.frameData = this.frameData;\n      }\n      this.controls.frame(frameOptions);\n\n      // Force update of camera local transform (camera.matrix) and recompute\n      // global transform (camera.matrixWorld) since controls may have updated\n      // camera position/rotation and guiSys needs the new value for hit-testing.\n      this._camera.updateMatrixWorld(true);\n\n      // Only update the compass if we're not in the headset on mobile\n      if (!(this.vrDisplay && this.vrDisplay.isPresenting && isMobile)) {\n        this._compass.set(1, 0, 0);\n        this._compass.applyQuaternion(this._camera.quaternion);\n        var rotationY = Math.acos(this._compass.x) * -Math.sign(this._compass.z);\n        if (rotationY !== this._lastAngle) {\n          this._lastAngle = rotationY;\n          this.overlay.setCompassAngle(this._lastAngle);\n        }\n      }\n    }\n  }, {\n    key: '_renderUpdate',\n    value: function _renderUpdate(node, scene, camera) {\n      node.onUpdate && node.onUpdate(scene, camera);\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var child = _step.value;\n\n          this._renderUpdate(child, scene, camera);\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n    }\n\n    /**\n     * Called by the user to render a frame to the canvas.\n     * Ideally, it should be called on a rAF loop.\n     * @param scene - A Three.js Scene to be rendered\n     */\n\n  }, {\n    key: 'render',\n    value: function render(scene) {\n      this._renderUpdate(scene, scene, this._camera);\n      if (this.effect && this.frameData && this.vrDisplay && this.vrDisplay.isPresenting) {\n        this.effect.render(scene, this._camera, this.frameData);\n        if (!isMobile) {\n          // This render is used to mirror the output to the onscreen\n          // canvas which is useful for debugging on non-mobile devices.\n          this._renderMonoCamera(scene);\n        }\n      } else {\n        // This render is our fallback when not in VR and renders the\n        // left eye to the onscreen canvas.\n        this._renderMonoCamera(scene);\n      }\n    }\n  }, {\n    key: 'renderOffscreen',\n    value: function renderOffscreen(scene, camera, target) {\n      this._renderUpdate(scene, scene, camera);\n      var oldClearColor = this.glRenderer.getClearColor();\n      var oldClearAlpha = this.glRenderer.getClearAlpha();\n      var oldSort = this.glRenderer.sortObjects;\n      var oldClipping = this.glRenderer.localClippingEnabled;\n      this.glRenderer.localClippingEnabled = true;\n      this.glRenderer.setClearColor('#000', 0);\n      this.glRenderer.sortObjects = false;\n      this.glRenderer.render(scene, camera, target, true);\n      this.glRenderer.sortObjects = oldSort;\n      this.glRenderer.setClearColor(oldClearColor, oldClearAlpha);\n      this.glRenderer.setRenderTarget(null);\n      this.glRenderer.localClippingEnabled = oldClipping;\n    }\n\n    /**\n     * Used to prepare the resources necessary to render the\n     * single eye view. This assumes that the single eye will\n     * be the left eye.\n     * @param scene - A Three.js Scene to render with the default mono camera.\n     */\n\n  }, {\n    key: '_renderMonoCamera',\n    value: function _renderMonoCamera(scene) {\n      // The scene may have a background already, save it and restore it since\n      // the Scene object is supplied by the author.\n      var backupScene = scene.background;\n      // Our convention allows a left and right background to enable stereoscopic\n      // cube maps or equirect rendering. Select the left background when rendering\n      // only a single eye.\n      if (scene.backgroundLeft) {\n        scene.background = scene.backgroundLeft;\n      }\n      this.glRenderer.render(scene, this._camera);\n      scene.background = backupScene;\n    }\n\n    /**\n     * Picks the correct rAF function, depending on which device is currently\n     * displaying content.\n     * @param fn - A function to call on the next frame\n     * @return A rAF handle that can be canceled\n     */\n\n  }, {\n    key: 'requestAnimationFrame',\n    value: function requestAnimationFrame(fn) {\n      if (this.vrDisplay) {\n        return this.vrDisplay.requestAnimationFrame(fn);\n      }\n      return window.requestAnimationFrame(fn);\n    }\n\n    /**\n     * Request to present to the display, via the VR effect\n     */\n\n  }, {\n    key: 'enterVR',\n    value: function enterVR() {\n      var _this2 = this;\n\n      if (!this.vrDisplay || !this.effect) {\n        return Promise.reject('Cannot enter VR, no display detected');\n      }\n      return this.effect.requestPresent().then(function () {\n        if (_this2.onEnterVR) {\n          _this2.onEnterVR();\n        }\n        _this2.setVRButtonState(true, 'Exit VR', _this2.exitVR);\n      });\n    }\n\n    /**\n     * Stop presenting to the display.\n     */\n\n  }, {\n    key: 'exitVR',\n    value: function exitVR() {\n      var _this3 = this;\n\n      if (!this.vrDisplay || !this.vrDisplay.isPresenting || !this.effect) {\n        if (this.vrDisplay && !this.vrDisplay.isPresenting) {\n          this.setVRButtonState(true, 'View in VR', this.attemptEnterVR);\n        }\n        return Promise.reject('Cannot exit, not currently presenting');\n      }\n      return this.effect.exitPresent().then(function () {\n        if (_this3.onExitVR) {\n          _this3.onExitVR();\n        }\n        _this3.setVRButtonState(true, 'View in VR', _this3.attemptEnterVR);\n      }, function (err) {\n        console.error(err);\n      });\n    }\n\n    /**\n     * Try mutiple methods to get the user into a VR browser.\n     * If the current browser is WebVR-enabled and a display is , it will call the onEnterVR\n     * callback provided at construction.\n     * If there is a WebVR browser installed that is registered to handle\n     * ovrweb: protocol links, it will try to open that browser.\n     * Otherwise, it will display a message about supported VR devices.\n     */\n\n  }, {\n    key: 'attemptEnterVR',\n    value: function attemptEnterVR() {\n      var _this4 = this;\n\n      if (isVRBrowser() && this.vrDisplay) {\n        console.log('Entering VR');\n        this.enterVR().then(function () {\n          // Succeeded\n          console.log('Presenting to VR Display');\n        }, function (err) {\n          console.error('Failed to present. Is another application is already using the display?');\n        });\n      } else if (this.allowCarmelDeeplink) {\n        console.log('Attempting Oculus Browser');\n        // Disable the button, so we only make one protocol attempt at a time\n        this.overlay.disableVRButton();\n        (0, _OculusPlayer.attemptOculusPlayer)().then(function () {\n          // On success, re-enable the button for when the user comes back\n          _this4.overlay.enableVRButton();\n        }, function () {\n          console.log('No VR support!');\n          _this4.overlay.enableVRButton();\n          _this4.overlay.showSupportMessage();\n        });\n      }\n    }\n\n    /**\n     * Attempt to enter fullscreen mode using the prefixed method passed to the\n     * handler.\n     */\n\n  }, {\n    key: 'attemptEnterFullscreen',\n    value: function attemptEnterFullscreen(fullscreenMethod) {\n      document.addEventListener(fullscreenEvent, this.handleFullscreenChange);\n      var canvas = this.glRenderer.domElement;\n      if (typeof canvas[fullscreenMethod] === 'function') {\n        canvas[fullscreenMethod]();\n      }\n    }\n\n    /**\n     * Triggered when the fullscreen state changes. If the fullscreen element is\n     * the rendering canvas, that means fullscreen was entered successfully, and\n     * the canvas and camera are resized. If the fullscreen element is void, that\n     * means fullscreen was exited and the sizes are reset.\n     */\n\n  }, {\n    key: 'handleFullscreenChange',\n    value: function handleFullscreenChange() {\n      var element = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n      if (element === this.glRenderer.domElement) {\n        // Entered fullscreen mode\n        this.resize(window.innerWidth, window.innerHeight);\n      } else if (!element) {\n        // Exited fullscreen mode\n        this.resize(this.width, this.height);\n        document.removeEventListener(fullscreenEvent, this.handleFullscreenChange);\n      }\n    }\n\n    /**\n     * resize the player, adjusting the viewport and css sizes of components, and\n     * updating the aspect ratio of the camera.\n     */\n\n  }, {\n    key: 'resize',\n    value: function resize(width, height) {\n      if (this.glRenderer && this._camera) {\n        this._wrapper.style.width = width + 'px';\n        this._wrapper.style.height = height + 'px';\n        if (!this.fixedPixelRatio) {\n          this.pixelRatio = window.devicePixelRatio || 1;\n        }\n        this.glRenderer.setPixelRatio(this.pixelRatio);\n        this.glRenderer.setSize(width, height, true);\n        var fov = void 0;\n        if (isMobileInLandscapeOrientation()) {\n          // clamp the range of fov\n          fov = Math.max(30, Math.min(70, 60 / (width / height)));\n        } else {\n          fov = 60;\n        }\n        if (typeof this.calculateVerticalFOV === 'function') {\n          fov = this.calculateVerticalFOV(width, height);\n        }\n        this._camera.fov = fov;\n        this._camera.aspect = width / height;\n        this._camera.updateProjectionMatrix();\n      }\n    }\n\n    /**\n     * Add a throttled event handler to window's resize listener. When the window\n     * size changes, the player is adjusted to match. This handler is\n     * automatically attached when the parent of the player is the body tag.\n     */\n\n  }, {\n    key: 'addResizeHandler',\n    value: function addResizeHandler() {\n      var _this5 = this;\n\n      var last = 0;\n      var timer = null;\n      var delay = 100;\n      // Throttled window resize handler\n      this._resizeHandler = function () {\n        if (_this5.vrDisplay && _this5.vrDisplay.isPresenting) {\n          return;\n        }\n        var now = Date.now();\n        if (!last) {\n          last = now;\n        }\n        if (timer) {\n          clearTimeout(timer);\n        }\n        if (now > last + delay) {\n          last = now;\n          _this5.resize(window.innerWidth, window.innerHeight);\n          return;\n        }\n        timer = setTimeout(function () {\n          last = now;\n          _this5.resize(window.innerWidth, window.innerHeight);\n        }, delay);\n      };\n      window.addEventListener('resize', this._resizeHandler);\n    }\n\n    /**\n     * Clean up the window's resize handler\n     */\n\n  }, {\n    key: 'removeResizeHandler',\n    value: function removeResizeHandler() {\n      if (this._resizeHandler) {\n        window.removeEventListener('resize', this._resizeHandler);\n        this._resizeHandler = null;\n      }\n    }\n\n    /**\n     * Reset the camera angles to their initial position\n     */\n\n  }, {\n    key: 'resetAngles',\n    value: function resetAngles() {\n      var _initialAngles = this._initialAngles,\n          x = _initialAngles.x,\n          y = _initialAngles.y,\n          z = _initialAngles.z;\n\n      this.controls.resetRotation(x, y, z);\n    }\n\n    // Control the appearance and actions of the overlay's vr button\n\n  }, {\n    key: 'setVRButtonState',\n    value: function setVRButtonState(visible, text, handler) {\n      if (visible) {\n        this.overlay.enableVRButton();\n      } else {\n        this.overlay.disableVRButton();\n      }\n      this.overlay.setVRButtonText(text);\n      this.overlay.setVRButtonHandler(handler);\n    }\n\n    // VR Display state management\n\n  }, {\n    key: 'setCurrentDisplay',\n    value: function setCurrentDisplay(display) {\n      this.vrDisplay = display;\n      this.controls.setVRDisplay(display);\n      if (display) {\n        var effect = new _VREffect2.default(this.glRenderer, display);\n        this.effect = effect;\n        var size = this.glRenderer.getSize();\n        effect.setSize(size.width, size.height);\n        this.setVRButtonState(true, 'View in VR', this.attemptEnterVR);\n      } else {\n        this.effect = null;\n        this.setVRButtonState(false, 'VR Unavailable', null);\n      }\n    }\n  }, {\n    key: 'initializeDisplay',\n    value: function initializeDisplay() {\n      var _this6 = this;\n\n      if (!isVRBrowser() && !this.allowCarmelDeeplink) {\n        return;\n      }\n      this.setVRButtonState(true, 'View in VR', this.attemptEnterVR);\n      if (typeof navigator.getVRDisplays === 'function') {\n        navigator.getVRDisplays().then(function (displays) {\n          if (displays.length) {\n            _this6.setCurrentDisplay(displays[0]);\n            return _this6.enterVR();\n          }\n        }).catch(function (err) {\n          // Silence the permissions error, it's typically expected\n        });\n      }\n    }\n  }, {\n    key: 'onDisplayConnect',\n    value: function onDisplayConnect(_ref) {\n      var display = _ref.display;\n\n      if (this.vrDisplay) {\n        return;\n      }\n      this.setCurrentDisplay(display);\n    }\n  }, {\n    key: 'onDisplayDisconnect',\n    value: function onDisplayDisconnect(_ref2) {\n      var _this7 = this;\n\n      var display = _ref2.display;\n\n      // if display is not current display, return\n      // if presenting, exit presenting, cleanup\n      // query remaining displays\n      // if displays are not empty, set current display to first one\n      // else, clear current display, set state to disconnected\n      if (display !== this.vrDisplay) {\n        return;\n      }\n      if (typeof navigator.getVRDisplays === 'function') {\n        navigator.getVRDisplays().then(function (displays) {\n          if (displays.length === 0) {\n            _this7.setCurrentDisplay(displays[0]);\n          } else {\n            _this7.setCurrentDisplay(null);\n          }\n        });\n      }\n    }\n  }, {\n    key: 'onDisplayActivate',\n    value: function onDisplayActivate(_ref3) {\n      var display = _ref3.display;\n\n      if (display === this.vrDisplay) {\n        this.enterVR();\n      }\n    }\n  }, {\n    key: 'onDisplayDeactivate',\n    value: function onDisplayDeactivate(_ref4) {\n      var display = _ref4.display;\n\n      if (display === this.vrDisplay) {\n        this.exitVR();\n      }\n    }\n\n    // Get/Set camera needed so the default camera can be retrieved or adjusted.\n\n  }, {\n    key: 'camera',\n    get: function get() {\n      return this._camera;\n    },\n    set: function set(value) {\n      this._camera = value;\n      this._initialAngles = {\n        x: value.rotation.x,\n        y: value.rotation.y,\n        z: value.rotation.z\n      };\n      if (typeof this.controls.setCamera === 'function') {\n        this.controls.setCamera(value);\n      }\n    }\n\n    // Get renderer\n\n  }, {\n    key: 'renderer',\n    get: function get() {\n      return this.glRenderer;\n    }\n  }]);\n\n  return Player;\n}();\n\nexports.default = Player;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.attemptOculusPlayer = attemptOculusPlayer;\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n/**\n * Utilities for interacting with a VR player that supports the `ovrweb`\n * protocol\n */\n\n// Basic browser detection\nvar isChrome = !!window.chrome;\nvar isFirefox = !!window.sidebar;\nvar isEdge = !!navigator.msLaunchUri;\n\n// This is only used on Chrome, so we only need the webkit prefix\nvar visibilityEvent = 'hidden' in document ? 'visibilitychange' : 'webkitvisibilitychange';\n\n/**\n * Attempt to open a link with the `ovrweb:` protocol.\n *   On Edge, protocol opening and failure cases are pretty straightforward.\n *   On Firefox, we detect it with an iframe, and catch an error if it fails\n * @return A promise that is resolved if launching the external application is\n *   successful, and rejected if it fails.\n */\nfunction attemptOculusPlayer() {\n  var url = 'ovrweb:' + window.location.toString();\n  return new Promise(function (resolve, reject) {\n    if (isEdge && typeof navigator.msLaunchUri === 'function') {\n      navigator.msLaunchUri(url, function () {\n        resolve();\n      }, function () {\n        reject();\n      });\n    } else if (isFirefox) {\n      var iframe = document.createElement('iframe');\n      iframe.src = 'about:blank';\n      iframe.style.display = 'none';\n      if (document.body) {\n        document.body.appendChild(iframe);\n      }\n      var success = false;\n      try {\n        iframe.contentWindow.location = url;\n        success = true;\n      } catch (e) {\n        reject();\n      }\n      if (success) {\n        // keep resolve out of the try block, that can silence errors elsewhere\n        resolve();\n      }\n    } else if (isChrome) {\n      var topNode = window;\n      // In case the current window is an iframe, move up to the top window\n      while (topNode !== topNode.parent) {\n        topNode = topNode.parent;\n      }\n      var timeout = setTimeout(function () {\n        topNode.removeEventListener('blur', blurHandler);\n        document.removeEventListener(visibilityEvent, blurHandler);\n        reject();\n      }, 2000);\n      var blurHandler = function blurHandler(e) {\n        if (timeout) {\n          clearTimeout(timeout);\n          timeout = null;\n        }\n        topNode.removeEventListener('blur', blurHandler);\n        document.removeEventListener(visibilityEvent, blurHandler);\n        resolve();\n      };\n\n      // Blur event is for desktop, visibility change is for Android\n      topNode.addEventListener('blur', blurHandler);\n      document.addEventListener(visibilityEvent, blurHandler);\n      window.location = url;\n    } else {\n      reject();\n    }\n  });\n}","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Copyright (c) 2016-present, Facebook, Inc.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * All rights reserved.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * This source code is licensed under the BSD-style license found in the\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * LICENSE file in the root directory of this source tree. An additional grant\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * of patent rights can be found in the PATENTS file in the same directory.\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\nvar _setStyles = require('./setStyles');\n\nvar _setStyles2 = _interopRequireDefault(_setStyles);\n\nvar _Glyphs = require('./Glyphs');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar fullscreenMethod = null;\nif ('requestFullscreen' in Element.prototype) {\n  fullscreenMethod = 'requestFullscreen';\n} else if ('webkitRequestFullscreen' in Element.prototype) {\n  fullscreenMethod = 'webkitRequestFullscreen';\n} else if ('mozRequestFullScreen' in Element.prototype) {\n  fullscreenMethod = 'mozRequestFullScreen';\n} else if ('msRequestFullscreen' in Element.prototype) {\n  fullscreenMethod = 'msRequestFullscreen';\n}\n\nvar RAD_TO_DEG = 180 / Math.PI;\n\nvar OVERLAY_STYLES = {\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  right: 0,\n  top: 0,\n  pointerEvents: 'none',\n  userSelect: 'none'\n};\nvar COMPASS_WRAPPER_STYLES = {\n  backgroundColor: 'rgba(0,0,0,0.7)',\n  borderRadius: '100%',\n  height: '30px',\n  marginTop: '-20px',\n  padding: '5px',\n  position: 'absolute',\n  right: '20px',\n  top: '50%',\n  width: '30px'\n};\nvar COMPASS_STYLES = {\n  cursor: 'pointer',\n  pointerEvents: 'initial',\n  transformOrigin: '50% 50%'\n};\nvar VR_BUTTON_STYLES = {\n  background: 'rgba(0, 0, 0, 0.7)',\n  border: '2px solid #ffffff',\n  borderRadius: '5px',\n  bottom: '20px',\n  color: '#ffffff',\n  cursor: 'pointer',\n  display: 'none',\n  fontFamily: 'Helvetica, Arial, sans-serif',\n  fontSize: '16px',\n  fontWeight: 'normal',\n  left: '18px',\n  padding: '0 10px',\n  pointerEvents: 'initial',\n  position: 'absolute'\n};\nvar VR_BUTTON_LABEL_STYLES = {\n  display: 'inline-block',\n  lineHeight: '38px',\n  marginLeft: '10px',\n  verticalAlign: 'top'\n};\nvar FULLSCREEN_STYLES = {\n  background: 'rgba(0, 0, 0, 0.7)',\n  border: '2px solid #ffffff',\n  borderRadius: '5px',\n  bottom: '20px',\n  cursor: 'pointer',\n  display: 'inline-block',\n  height: '30px',\n  padding: '4px',\n  pointerEvents: 'initial',\n  position: 'absolute',\n  right: '18px',\n  verticalAlign: 'bottom',\n  width: '30px'\n};\nvar GYRO_WRAPPER_STYLES = {\n  height: '40px',\n  left: '50%',\n  marginLeft: '-20px',\n  marginTop: '-20px',\n  position: 'absolute',\n  top: '50%',\n  width: '40px',\n  transition: 'opacity 1s ease-out'\n};\nvar SUPPORT_MESSAGE_STYLES = {\n  background: 'rgba(0, 0, 0, 0.7)',\n  border: '2px solid #ffffff',\n  borderRadius: '5px',\n  color: '#ffffff',\n  cursor: 'default',\n  fontFamily: 'Helvetica, Arial, sans-serif',\n  fontSize: '16px',\n  fontWeight: 'normal',\n  left: '50%',\n  lineHeight: '20px',\n  padding: '10px',\n  pointerEvents: 'initial',\n  position: 'absolute',\n  textAlign: 'center',\n  top: '50%',\n  transform: 'translate(-50%, -50%)',\n  width: '240px'\n};\nvar SUPPORT_ACTIONS_STYLES = {\n  paddingTop: '16px'\n};\nvar SUPPORT_LEARN_MORE_STYLES = {\n  color: '#ffffff',\n  display: 'inline-block',\n  marginRight: '40px',\n  textDecoration: 'none'\n};\nvar SUPPORT_CANCEL_STYLES = {\n  color: '#ffffff',\n  cursor: 'pointer'\n};\n\n/**\n * The overlaid controls for the WebVR Player.\n * It contains a 360 content indicator, and a \"View in VR\" button.\n * The functionality of the Overlay is entirely controlled by the Player,\n * it is a layout component with no real inner logic.\n */\nvar Overlay = function () {\n\n  /**\n   * Set up all of the DOM nodes around\n   * @param options - Optional map of configuration options. The only currently\n   *   supported option is vrButtonHandler, a callback that is triggered when\n   *   the VR button is clicked on a browser supporting WebVR.\n   */\n  function Overlay() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Overlay);\n\n    this.vrButtonHandler = options.vrButtonHandler;\n    this.fullscreenButtonHandler = options.fullscreenButtonHandler;\n    this.handleVRButton = this.handleVRButton.bind(this);\n    this.handleFullscreenButton = this.handleFullscreenButton.bind(this);\n\n    var overlayNode = document.createElement('div');\n    (0, _setStyles2.default)(overlayNode, OVERLAY_STYLES);\n    var vrButton = document.createElement('a');\n    this.vrButton = vrButton;\n    (0, _setStyles2.default)(vrButton, VR_BUTTON_STYLES);\n    var vrGlyph = (0, _Glyphs.createViewInVrGlyph)(38, 38, '#ffffff');\n    vrButton.appendChild(vrGlyph);\n    var vrButtonLabel = document.createElement('span');\n    (0, _setStyles2.default)(vrButtonLabel, VR_BUTTON_LABEL_STYLES);\n    vrButtonLabel.appendChild(document.createTextNode('View in VR'));\n    vrButton.appendChild(vrButtonLabel);\n    vrButton.addEventListener('click', this.handleVRButton);\n    var fullscreenButton = document.createElement('a');\n    this.fullscreenButton = fullscreenButton;\n    (0, _setStyles2.default)(fullscreenButton, FULLSCREEN_STYLES);\n    var fullscreenGlyph = (0, _Glyphs.createFullscreenGlyph)(30, 30, '#ffffff');\n    fullscreenButton.appendChild(fullscreenGlyph);\n    fullscreenButton.title = 'Full Screen';\n    fullscreenButton.style.display = fullscreenMethod && !options.hideFullscreen ? 'inline-block' : 'none';\n    fullscreenButton.addEventListener('click', this.handleFullscreenButton);\n    overlayNode.appendChild(vrButton);\n    overlayNode.appendChild(fullscreenButton);\n\n    var compassWrapper = document.createElement('div');\n    (0, _setStyles2.default)(compassWrapper, COMPASS_WRAPPER_STYLES);\n    compassWrapper.style.display = !options.hideCompass ? 'inline-block' : 'none';\n    this.compass = (0, _Glyphs.createCompassGlyph)(30, 30, '#ffffff');\n    (0, _setStyles2.default)(this.compass, COMPASS_STYLES);\n    if (typeof options.resetAngles === 'function') {\n      this.compass.addEventListener('click', options.resetAngles);\n    }\n    compassWrapper.appendChild(this.compass);\n    overlayNode.appendChild(compassWrapper);\n\n    this.gyro = null;\n    try {\n      var gyro = (0, _Glyphs.createGyroGlyph)(40, 40, '#ffffff');\n      var gyroWrapper = document.createElement('div');\n      (0, _setStyles2.default)(gyroWrapper, GYRO_WRAPPER_STYLES);\n      gyroWrapper.appendChild(gyro);\n      this.gyro = gyroWrapper;\n      overlayNode.appendChild(gyroWrapper);\n    } catch (e) {\n      // If SVG construction fails, don't show the glyph\n    }\n\n    this.domElement = overlayNode;\n  }\n\n  /**\n   * Allow the VR button to be clicked\n   */\n\n\n  _createClass(Overlay, [{\n    key: 'enableVRButton',\n    value: function enableVRButton() {\n      this.vrButton.style.display = 'inline-block';\n      this.vrButton.style.color = '#ffffff';\n      this.vrButton.style.borderColor = '#ffffff';\n      this.vrButton.style.cursor = 'pointer';\n    }\n\n    /**\n     * Disable the VR button\n     */\n\n  }, {\n    key: 'disableVRButton',\n    value: function disableVRButton() {\n      this.vrButton.style.color = '#a0a0a0';\n      this.vrButton.style.borderColor = '#a0a0a0';\n      this.vrButton.style.cursor = 'inherit';\n    }\n\n    /**\n     * Hide the VR button\n     */\n\n  }, {\n    key: 'hideVRButton',\n    value: function hideVRButton() {\n      this.vrButton.style.display = 'none';\n    }\n\n    /**\n     * Set the text of the VR button\n     */\n\n  }, {\n    key: 'setVRButtonText',\n    value: function setVRButtonText(text) {\n      this.vrButton.childNodes[1].childNodes[0].nodeValue = text;\n    }\n\n    /**\n     * Set a new callback for the VR button\n     */\n\n  }, {\n    key: 'setVRButtonHandler',\n    value: function setVRButtonHandler(cb) {\n      this.vrButtonHandler = cb;\n    }\n\n    /**\n     * Run the VR button callback provided by the Player. We wrap the callback\n     * so that we can always ensure that the handler we remove is the same as\n     * the one we attached.\n     */\n\n  }, {\n    key: 'handleVRButton',\n    value: function handleVRButton() {\n      if (this.vrButtonHandler) {\n        this.vrButtonHandler();\n      }\n    }\n\n    /**\n     * Attempt to enter fullscreen mode, if it's supported by the browser\n     */\n\n  }, {\n    key: 'handleFullscreenButton',\n    value: function handleFullscreenButton() {\n      if (this.fullscreenButtonHandler) {\n        this.fullscreenButtonHandler(fullscreenMethod);\n      }\n    }\n\n    /**\n     * Show the gyroscope glyph\n     */\n\n  }, {\n    key: 'showGyro',\n    value: function showGyro() {\n      if (this.gyro) {\n        this.gyro.style.opacity = 1;\n      }\n    }\n\n    /**\n     * Hide the gyroscope glyph\n     */\n\n  }, {\n    key: 'hideGyro',\n    value: function hideGyro() {\n      if (this.gyro) {\n        this.gyro.style.opacity = 0;\n      }\n    }\n\n    /**\n     * Show a message to the user about using GearVR and Rift to experience the\n     * scene in VR.\n     */\n\n  }, {\n    key: 'showSupportMessage',\n    value: function showSupportMessage() {\n      var _this = this;\n\n      // Only construct the message once\n      if (this.supportMessage) {\n        this.domElement.appendChild(this.supportMessage);\n        return;\n      }\n      var message = document.createElement('div');\n      (0, _setStyles2.default)(message, SUPPORT_MESSAGE_STYLES);\n      this.supportMessage = message;\n\n      var text = document.createElement('div');\n      text.appendChild(document.createTextNode('Install a WebVR-enabled browser to experience VR on this device'));\n      message.appendChild(text);\n\n      var actions = document.createElement('div');\n      (0, _setStyles2.default)(actions, SUPPORT_ACTIONS_STYLES);\n\n      var learnMore = document.createElement('a');\n      (0, _setStyles2.default)(learnMore, SUPPORT_LEARN_MORE_STYLES);\n      learnMore.href = 'https://webvr.info/';\n      learnMore.target = '_blank';\n      learnMore.appendChild(document.createTextNode('Learn More'));\n\n      var cancel = document.createElement('a');\n      (0, _setStyles2.default)(cancel, SUPPORT_CANCEL_STYLES);\n      cancel.appendChild(document.createTextNode('Cancel'));\n      cancel.addEventListener('click', function () {\n        _this.hideSupportMessage();\n      });\n      actions.appendChild(learnMore);\n      actions.appendChild(cancel);\n      message.appendChild(actions);\n      this.domElement.appendChild(message);\n    }\n\n    /**\n     * Hide the message about Rift and GearVR\n     */\n\n  }, {\n    key: 'hideSupportMessage',\n    value: function hideSupportMessage() {\n      if (this.supportMessage) {\n        this.domElement.removeChild(this.supportMessage);\n      }\n    }\n\n    /**\n     * Set the visibility of the Fullscreen button\n     */\n\n  }, {\n    key: 'setFullscreenButtonVisibility',\n    value: function setFullscreenButtonVisibility(show) {\n      this.fullscreenButton.style.display = fullscreenMethod && show ? 'inline-block' : 'none';\n    }\n\n    /**\n     * Set the orientation of the compass indicator\n     */\n\n  }, {\n    key: 'setCompassAngle',\n    value: function setCompassAngle(rad) {\n      var deg = -1 * rad * RAD_TO_DEG;\n      this.compass.style.transform = 'rotate(' + deg + 'deg)';\n    }\n  }]);\n\n  return Overlay;\n}();\n\nexports.default = Overlay;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setStyles;\n\n// Apply a set of styles to a DOM node\nfunction setStyles(node, styles) {\n  for (var property in styles) {\n    var destination = property;\n    // Handle prefixed properties\n    if (!node.style.hasOwnProperty(destination)) {\n      var uppercase = destination[0].toUpperCase() + destination.substr(1);\n      if (node.style.hasOwnProperty('moz' + uppercase)) {\n        destination = 'moz' + uppercase;\n      } else if (node.style.hasOwnProperty('webkit' + uppercase)) {\n        destination = 'webkit' + uppercase;\n      }\n    }\n    node.style[destination] = styles[property];\n  }\n}","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createGyroGlyph = createGyroGlyph;\nexports.createFullscreenGlyph = createFullscreenGlyph;\nexports.createCompassGlyph = createCompassGlyph;\nexports.createViewInVrGlyph = createViewInVrGlyph;\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n/**\n * Create an SVG version of the gyroscope glyph, an indicator of 360 content\n */\n\nvar SVG_NS = 'http://www.w3.org/2000/svg';\n\n/* eslint-disable max-len */\nvar GYRO_PATHS = ['M30,60 C46.5685425,60 60,46.5685425 60,30 C60,13.4314575 46.5685425,0 30,0 C13.4314575,0 0,13.4314575 0,30 C0,46.5685425 13.4314575,60 30,60 Z M30,56 C44.3594035,56 56,44.3594035 56,30 C56,15.6405965 44.3594035,4 30,4 C15.6405965,4 4,15.6405965 4,30 C4,44.3594035 15.6405965,56 30,56 Z', 'M30,56 C38.2842712,56 45,44.3594035 45,30 C45,15.6405965 38.2842712,4 30,4 C21.7157288,4 15,15.6405965 15,30 C15,44.3594035 21.7157288,56 30,56 Z M30,52 C36.0751322,52 41,42.1502645 41,30 C41,17.8497355 36.0751322,8 30,8 C23.9248678,8 19,17.8497355 19,30 C19,42.1502645 23.9248678,52 30,52 Z', 'M30,42 C44.3594035,42 56,36.627417 56,30 C56,23.372583 44.3594035,18 30,18 C15.6405965,18 4,23.372583 4,30 C4,36.627417 15.6405965,42 30,42 Z M30,38 C42.1502645,38 52,34.418278 52,30 C52,25.581722 42.1502645,22 30,22 C17.8497355,22 8,25.581722 8,30 C8,34.418278 17.8497355,38 30,38 Z'];\n\nvar FULLSCREEN_PATHS = ['M0,20 L0,0 L20,0 L20,10 L10,10 L10,20 Z', 'M40,0 L60,0 L60,20 L50,20 L50,10 L40,10 Z', 'M60,40 L60,60 L40,60 L40,50 L50,50 L50,40 Z', 'M20,60 L0,60 L0,40 L10,40 L10,50 L20,50 Z'];\n\nvar COMPASS_PATHS = ['M30,60 C46.5685425,60 60,46.5685425 60,30 C60,13.4314575 46.5685425,0 30,0 C13.4314575,0 0,13.4314575 0,30 C0,46.5685425 13.4314575,60 30,60 Z M30,58 C45.463973,58 58,45.463973 58,30 C58,14.536027 45.463973,2 30,2 C14.536027,2 2,14.536027 2,30 C2,45.463973 14.536027,58 30,58 Z', 'M42.7174074,12.0460131 C39.1265957,9.49790578 34.7382252,8 30,8 C25.2617748,8 20.8734043,9.49790578 17.2825926,12.0460131 L25.3754882,23.4712775 C26.6812379,22.544693 28.277009,22 30,22 C31.722991,22 33.3187621,22.544693 34.6245118,23.4712775 L42.7174074,12.0460131 Z', 'M26,30 a4,4 0 1,1 8,0 a4,4 0 1,1 -8,0'];\n\nvar VIEW_VR_PATHS = ['M17.9,26.2c-2.7,0-4.8,2.1-4.8,4.8s2.1,4.8,4.8,4.8s4.8-2.1,4.8-4.8S20.5,26.2,17.9,26.2z M41.9,12.9H18.1C8.1,12.9,0,21,0,31s8.1,18.1,18.1,18.1H42c10,0,18-8.1,18-18.1S52,12.9,41.9,12.9z M41.9,41.8h-3.6c-4,0-5.5-6.7-8.3-6.7s-4.1,6.7-8.3,6.7h-3.6c-6,0-10.9-4.9-10.9-10.9s4.9-10.9,10.9-10.9H42c6,0,10.9,4.9,10.9,10.9C52.8,37,48,41.8,41.9,41.8zM41.9,26.2c-2.7,0-4.8,2.1-4.8,4.8s2.1,4.8,4.8,4.8c2.7,0,4.8-2.1,4.8-4.8S44.5,26.2,41.9,26.2z'];\n/* eslint-enable max-len */\n\nfunction createGlyph(width, height, color, paths) {\n  if (!width) {\n    throw new Error('No width specified!');\n  }\n  if (!height) {\n    throw new Error('No height specified!');\n  }\n  var group = document.createElementNS(SVG_NS, 'g');\n  group.setAttributeNS(null, 'fill', color);\n  group.setAttributeNS(null, 'stroke', 'none');\n  group.setAttributeNS(null, 'fill-rule', 'evenodd');\n  for (var i = 0; i < paths.length; i++) {\n    var path = document.createElementNS(SVG_NS, 'path');\n    path.setAttributeNS(null, 'd', paths[i]);\n    group.appendChild(path);\n  }\n  var svg = document.createElementNS(SVG_NS, 'svg');\n  svg.setAttributeNS(null, 'width', width + 'px');\n  svg.setAttributeNS(null, 'height', height + 'px');\n  svg.setAttributeNS(null, 'viewBox', '0 0 60 60');\n  svg.appendChild(group);\n  return svg;\n}\n\nfunction createGyroGlyph(width, height) {\n  var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#ffffff';\n\n  return createGlyph(width, height, color, GYRO_PATHS);\n}\n\nfunction createFullscreenGlyph(width, height) {\n  var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#ffffff';\n\n  return createGlyph(width, height, color, FULLSCREEN_PATHS);\n}\n\nfunction createCompassGlyph(width, height) {\n  var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#ffffff';\n\n  return createGlyph(width, height, color, COMPASS_PATHS);\n}\n\nfunction createViewInVrGlyph(width, height) {\n  var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#ffffff';\n\n  return createGlyph(width, height, color, VIEW_VR_PATHS);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nimport * as THREE from 'three';\n\n/**\n * Class managing Head Model for ReactVR.\n * @constructor\n * @param {ReactNativeContext} rnctx - React Native Context\n */\nexport default class RCTHeadModel {\n  constructor(rnctx) {\n    this._rnctx = rnctx;\n  }\n\n  sendHeadModel(camera) {\n    // Send head(center eye) pose information\n    // TODO: send left/right eye pose information\n    camera.updateMatrixWorld(true);\n    // This is the transform from camera to world\n    const headMatrix = camera.matrixWorld;\n    // This is the transform from world to camera\n    const viewMatrix = new THREE.Matrix4();\n    viewMatrix.getInverse(headMatrix);\n\n    const headMatrixArray = headMatrix.toArray();\n    const viewMatrixArray = viewMatrix.toArray();\n\n    const target = this._rnctx.lastHit ? this._rnctx.getHitTag(this._rnctx.lastHit) : null;\n    const source = this._rnctx.lastSource;\n    if (target) {\n      // Dispatch head pose to hit view\n      this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n        target,\n        'topHeadPose',\n        {\n          headMatrix: headMatrixArray,\n          viewMatrix: viewMatrixArray,\n          target: target,\n          source: source,\n        },\n      ]);\n    }\n\n    // Dispatch event to registered callbacks\n    this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [\n      'onReceivedHeadMatrix',\n      headMatrixArray,\n      viewMatrixArray,\n      camera.fov,\n      camera.aspect,\n    ]);\n  }\n\n  frame(camera) {\n    this.sendHeadModel(camera);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Implements basic video playback.\n * Example usage:\n * ```\n * videoModule.addHandle(handle);\n * videoModule.setUrl(handle, url);\n * videoModule._setOnVideoReadyCallback(handle, function() {\n *   videoModule.play(handle);\n * });\n * videoModule.load(handle);\n * ```\n * @class RCTVideoModule\n * @extends Module\n */\n\nimport {getCustomizedSupportedFormats} from '../Video/VRVideoPlayer';\nimport VRVideoComponent from '../Video/VRVideoComponent';\nimport Module from './Module';\nimport MediaEvent from '../Events/MediaEvent';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\nimport type {VideoDef} from '../Video/VRVideoComponent';\n\nconst MEDIA_EVENT_CALLBACK_NAME = {\n  canplay: 'onVideoCanPlay',\n  durationchange: 'onVideoDurationChange',\n  ended: 'onVideoEnded',\n  error: 'onVideoError',\n  timeupdate: 'onVideoTimeUpdate',\n  playing: 'onVideoPlaying',\n  pause: 'onVideoPause',\n};\n\nexport default class RCTVideoModule extends Module {\n  _videoDefs: {[handle: string]: VideoDef};\n  _components: {[handle: string]: VRVideoComponent};\n  _rnctx: ReactNativeContext;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('RCTVideoModule');\n    this.supportedFormats = getCustomizedSupportedFormats() || [];\n    this._videoDefs = {};\n    this._players = {};\n    this._rnctx = rnctx;\n    this._mediaEventCallbacks = {};\n  }\n\n  /**\n   * Add a new handle to the video module\n   * @param {string} handle - The video handle.\n   */\n  addHandle(handle: string) {\n    const player = new VRVideoComponent();\n    this._players[handle] = player;\n    this._videoDefs[handle] = this._createVideoDef();\n    this._mediaEventCallbacks[handle] = {};\n    player.onMediaEvent = this._onMediaEvent.bind(this, handle);\n  }\n\n  _createVideoDef(): VideoDef {\n    return {};\n  }\n\n  _onMediaEvent(handle: string, event: Object) {\n    const eventType = event.type;\n    if (MEDIA_EVENT_CALLBACK_NAME[eventType]) {\n      const callbackName = MEDIA_EVENT_CALLBACK_NAME[eventType];\n      const mediaEvent = new MediaEvent(event);\n      // Emit media event to react\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [callbackName, handle, mediaEvent]);\n\n      // Emit media event to native side\n      const listeners = this._mediaEventCallbacks[handle]\n        ? this._mediaEventCallbacks[handle][eventType]\n        : null;\n      if (listeners) {\n        listeners.forEach(listener => listener(handle, mediaEvent));\n      }\n    }\n  }\n\n  // Add listener to media events on native side\n  _addMediaEventListener(handle: string, eventType: string, listener: any) {\n    if (!this._mediaEventCallbacks[handle]) {\n      console.warn(\n        'RCTVideoModule.addMediaEventListener: ' +\n          `can't add listener on a not exist handle: ${handle}`\n      );\n      return;\n    }\n\n    if (!MEDIA_EVENT_CALLBACK_NAME[eventType]) {\n      console.warn(\n        'RCTVideoModule.addMediaEventListener: ' +\n          `can't add listener on a not supported eventType: ${eventType}`\n      );\n      return;\n    }\n\n    if (!this._mediaEventCallbacks[handle][eventType]) {\n      this._mediaEventCallbacks[handle][eventType] = [];\n    }\n\n    const listeners = this._mediaEventCallbacks[handle][eventType];\n    if (listeners.indexOf(listener) === -1) {\n      listeners.push(listener);\n    }\n  }\n\n  // Remove listener to media events on native side\n  _removeMediaEventListener(handle: string, eventType: string, listener: any) {\n    if (!this._mediaEventCallbacks[handle] || !this._mediaEventCallbacks[handle][eventType]) {\n      return;\n    }\n    const listeners = this._mediaEventCallbacks[handle][eventType];\n    if (listeners) {\n      const index = listeners.indexOf(listener);\n      if (index !== -1) {\n        listeners.splice(index, 1);\n      }\n    }\n  }\n\n  /**\n   * Set the video url\n   * @param {string} handle - The video handle.\n   */\n  setUrl(handle: string, url: string) {\n    this._videoDefs[handle].src = url;\n  }\n\n  /**\n   * Set the video format\n   * @param {string} handle - The video handle.\n   * @param {string} format - The video format.\n   */\n  setFormat(handle: string, format: string) {\n    this._videoDefs[handle].format = format;\n  }\n\n  /**\n   * Set video metaData to video player, this can be used for\n   * customized video player\n   * @param {string} handle - The video handle.\n   * @param {any} metaData - The video metaData.\n   */\n  setMetaData(handle: string, metaData: any) {\n    this._videoDefs[handle].metaData = metaData;\n  }\n\n  getVideoTexture(handle: string) {\n    if (!handle) {\n      // Video was removed.\n      return null;\n    }\n    const player = this._players[handle];\n    return player.videoTextures[0];\n  }\n\n  /**\n   * load the video\n   * @param {string} handle - The video handle.\n   */\n  load(handle: string) {\n    this._players[handle].setVideo(this._videoDefs[handle]);\n\n    // Add resource to mono texture\n    const monoTextureInfo = {\n      type: 'MonoTextureInfo',\n      texture: this._players[handle].videoTextures[0],\n    };\n    this._rnctx.RCTResourceManager.addResource('MonoTexture', handle, monoTextureInfo);\n  }\n\n  /**\n   * play the video\n   * @param {string} handle - The video handle.\n   */\n  play(handle: string) {\n    this._players[handle].videoPlayer.play();\n  }\n\n  /**\n   * pause the video\n   * @param {string} handle - The video handle.\n   */\n  pause(handle: string) {\n    this._players[handle].videoPlayer.pause();\n  }\n\n  /**\n   * seek to a position in a video\n   * @param {string} handle - The video handle.\n   * @param {number} position - The video position to seek to\n   */\n  seekTo(handle: string, position: number) {\n    this._players[handle].videoPlayer.seekTo(position);\n  }\n\n  /**\n   * Set the muted attributed of the video\n   * @param {string} handle - The video handle.\n   * @param {boolean} muted - Whether the video's audio should be muted.\n   */\n  setMuted(handle: string, muted: boolean) {\n    this._players[handle].videoPlayer.setMuted(muted);\n  }\n\n  /**\n   * Set the volume of the video\n   * @param {string} handle - The video handle.\n   * @param {number} volume - The video volume.\n   */\n  setVolume(handle: string, volume: number) {\n    this._players[handle].videoPlayer.setVolume(volume);\n  }\n\n  /**\n   * unload the video and dispose of any resources.\n   * @param {string} handle - The video handle.\n   */\n  unload(handle: string) {\n    this._rnctx.RCTResourceManager.removeResource('MonoTexture', handle);\n    this._players[handle].dispose();\n    delete this._players[handle];\n    delete this._videoDefs[handle];\n    delete this._mediaEventCallbacks[handle];\n  }\n\n  frame() {\n    for (const key in this._players) {\n      this._players[key].frame();\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport BasicVideoPlayer from './BasicVideoPlayer';\nimport getSupportedFormats from './getSupportedFormats';\n\nimport type {VideoDef} from './VRVideoComponent';\n\nconst _customizedVideoPlayers: Array<Class<BasicVideoPlayer>> = [];\nlet _customizedSupportCache: ?Array<string> = null;\n\n/**\n * Get current video player\n */\nexport function getVideoPlayer(videDef: ?VideoDef): Class<BasicVideoPlayer> {\n  for (let i = 0; i < _customizedVideoPlayers.length; i++) {\n    const player = _customizedVideoPlayers[i];\n    const format = videDef ? videDef.format : null;\n    // Here we use == to compare to both null and undefined\n    if (\n      player.supportedFormats == null ||\n      format == null ||\n      player.supportedFormats.indexOf(format) > -1\n    ) {\n      return player;\n    }\n  }\n  return BasicVideoPlayer;\n}\n\n/**\n * Add a customized video player. A customized video player should extends BasicVideoPlayer.\n */\nexport function addCustomizedVideoPlayer(player: Class<BasicVideoPlayer>) {\n  _customizedVideoPlayers.push(player);\n}\n\nexport function getCustomizedSupportedFormats(): Array<string> {\n  if (_customizedSupportCache) {\n    return _customizedSupportCache;\n  }\n  _customizedSupportCache = getSupportedFormats();\n  for (let i = 0; i < _customizedVideoPlayers.length; i++) {\n    const player = _customizedVideoPlayers[i];\n    if (player.supportedFormats) {\n      const supportedFormats = player.supportedFormats;\n      for (let j = 0; j < supportedFormats.length; j++) {\n        if (_customizedSupportCache.indexOf(supportedFormats[j]) < 0) {\n          _customizedSupportCache.push(supportedFormats[j]);\n        }\n      }\n    }\n  }\n  return _customizedSupportCache;\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nconst MEDIA_EVENT_TYPES = [\n  'canplay',\n  'durationchange',\n  'ended',\n  'error',\n  'timeupdate',\n  'pause',\n  'playing',\n];\n\n/**\n * The basic video player\n */\nexport default class BasicVideoPlayer {\n  onMediaEvent: ?(any) => void;\n  videoElement: HTMLVideoElement;\n  _muted: boolean;\n  _volume: number;\n\n  /**\n   * Subclasses may use this property to define the video format\n   * the video player supports. e.g. If a video player defined\n   * `supportedFormats = ['mp4']`, when playing a .webm format video,\n   * VRVideoComponent will fall back to use other video player.\n   */\n  static supportedFormats: ?Array<string> = null;\n\n  constructor() {\n    this.videoElement = document.createElement('video');\n    this.videoElement.style.display = 'none';\n\n    // Prevents the default go to fullscreen behavior on iOS 10+\n    this.videoElement.setAttribute('playsinline', 'playsinline');\n    this.videoElement.setAttribute('webkit-playsinline', 'webkit-playsinline');\n\n    if (document.body) {\n      document.body.appendChild(this.videoElement);\n    }\n\n    this._volume = 1.0;\n    this._muted = false;\n\n    this.onMediaEvent = undefined;\n    (this: any)._onMediaEvent = this._onMediaEvent.bind(this);\n  }\n\n  initializeVideo(src: string, metaData: any) {\n    this.videoElement.src = src;\n    this.videoElement.crossOrigin = 'anonymous';\n    this._bindMediaEvents();\n    this.videoElement.load();\n  }\n\n  hasEnoughData(): boolean {\n    return (\n      !!this.videoElement && this.videoElement.readyState === this.videoElement.HAVE_ENOUGH_DATA\n    );\n  }\n\n  _bindMediaEvents() {\n    MEDIA_EVENT_TYPES.forEach(eventType => {\n      this.videoElement.addEventListener(eventType, this._onMediaEvent);\n    });\n  }\n\n  _unbindMediaEvents() {\n    MEDIA_EVENT_TYPES.forEach(eventType => {\n      this.videoElement.removeEventListener(eventType, this._onMediaEvent);\n    });\n  }\n\n  _onMediaEvent(event: any) {\n    if (typeof this.onMediaEvent === 'function') {\n      this.onMediaEvent(event);\n    }\n  }\n\n  setVolume(volume: number) {\n    this.videoElement.volume = volume;\n  }\n\n  setMuted(muted: boolean) {\n    this.videoElement.muted = muted;\n  }\n\n  play() {\n    this.videoElement.play();\n  }\n\n  pause() {\n    this.videoElement.pause();\n  }\n\n  seekTo(position: number) {\n    this.videoElement.currentTime = position;\n  }\n\n  dispose() {\n    this.pause();\n    if (document.body) {\n      document.body.removeChild(this.videoElement);\n    }\n    this.videoElement.src = '';\n    this._unbindMediaEvents();\n    this.onMediaEvent = undefined;\n  }\n}\n","/*\n * Copyright (c) 2016-present, Oculus, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\nconst FORMATS = {\n  ogg: 'video/ogg; codecs=\"theora, vorbis\"',\n  mp4: 'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"',\n  mkv: 'video/x-matroska; codecs=\"theora, vorbis\"',\n  webm: 'video/webm; codecs=\"vp8, vorbis\"',\n};\n\nlet supportCache = null;\n\nexport default function getSupportedFormats() {\n  if (supportCache) {\n    return supportCache;\n  }\n\n  const video = document.createElement('video');\n  supportCache = [];\n  for (const type in FORMATS) {\n    const canPlay = video.canPlayType(FORMATS[type]);\n    if (canPlay.length && canPlay !== 'no') {\n      supportCache.push(type);\n    }\n  }\n\n  return supportCache;\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * A wrapper of video player, generating textures for video.\n */\n\nimport {getVideoPlayer} from './VRVideoPlayer';\nimport * as THREE from 'three';\n\nimport type {Texture} from 'three';\n\ninterface VideoPlayer {\n  initializeVideo(src: string, metaData: any): void,\n  dispose(): void,\n  hasEnoughData(): boolean,\n}\n\nexport type VideoDef = {\n  src: string,\n  format: ?string,\n  metaData: any,\n};\n\nexport default class VRVideoComponent {\n  onMediaEvent: ?(any) => void;\n  videoDef: ?VideoDef;\n  videoPlayer: ?VideoPlayer;\n  videoTextures: Array<Texture>;\n\n  constructor() {\n    this.videoPlayer = null;\n    this.videoTextures = [];\n\n    this.onMediaEvent = undefined;\n    (this: any)._onMediaEvent = this._onMediaEvent.bind(this);\n  }\n\n  /**\n  * @param videoDef definition of a video to play\n  * @param videoDef.src url of video if the streamingType is none\n  */\n  setVideo(videoDef: VideoDef) {\n    this._freeVideoPlayer();\n    this._freeTexture();\n    this._setVideoDef(videoDef);\n\n    this.videoPlayer = new (getVideoPlayer(this.videoDef))();\n    this.videoPlayer.onMediaEvent = this._onMediaEvent;\n\n    const texture = new THREE.Texture(this.videoPlayer.videoElement);\n    texture.generateMipmaps = false;\n    texture.wrapS = THREE.ClampToEdgeWrapping;\n    texture.wrapT = THREE.ClampToEdgeWrapping;\n    texture.minFilter = THREE.LinearFilter;\n    texture.magFilter = THREE.LinearFilter;\n    // For rectlinear and equirect video, we use same texture for both eye\n    this.videoTextures[0] = texture;\n    // Uncomment when we support stereo cubemap.\n    //this.videoTextures[1] = texture;\n\n    if (this.videoDef) {\n      const videoDef = this.videoDef;\n      if (this.videoPlayer) {\n        this.videoPlayer.initializeVideo(videoDef.src, videoDef.metaData);\n      }\n    }\n  }\n\n  _setVideoDef(videoDef: VideoDef) {\n    this.videoDef = {\n      src: videoDef.src,\n      format: videoDef.format,\n      metaData: videoDef.metaData,\n    };\n  }\n\n  _onMediaEvent(event: any) {\n    if (typeof this.onMediaEvent === 'function') {\n      this.onMediaEvent(event);\n    }\n  }\n\n  _freeVideoPlayer() {\n    if (this.videoPlayer) {\n      this.videoPlayer.dispose();\n    }\n    this.videoPlayer = null;\n  }\n\n  _freeTexture() {\n    for (let i = 0; i < this.videoTextures.length; i++) {\n      if (this.videoTextures[i]) {\n        this.videoTextures[i].dispose();\n      }\n    }\n    this.videoTextures = [];\n  }\n\n  frame() {\n    if (this.videoPlayer && this.videoPlayer.hasEnoughData()) {\n      for (let i = 0; i < this.videoTextures.length; i++) {\n        if (this.videoTextures[i]) {\n          this.videoTextures[i].needsUpdate = true;\n        }\n      }\n    }\n  }\n\n  dispose() {\n    this._freeVideoPlayer();\n    this._freeTexture();\n    this.onMediaEvent = undefined;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Generate Media Events for React VR, only useful subset of attributes\n * of a HTMLMediaEvent will be extracted.\n * @constructor\n * @param {event} Event - the original media event\n */\n\nexport default class MediaEvent {\n  constructor(event: Object) {\n    this.type = event.type;\n    this.timeStamp = event.timeStamp;\n    if (event.target) {\n      this.target = {};\n      this.target.currentTime = event.target.currentTime;\n      this.target.duration = event.target.duration;\n      this.target.ended = event.target.ended;\n      this.target.error = event.target.error;\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport getSupportedFormats from '../Audio/getSupportedFormats';\nimport VRAudioComponent from '../Audio/VRAudioComponent';\nimport VRAudioContext from '../Audio/VRAudioContext';\nimport Module from './Module';\nimport * as THREE from 'three';\nimport MediaEvent from '../Events/MediaEvent';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\nimport type {AudioConfig, AudioDef} from '../Audio/AudioTypes';\n\nconst MEDIA_EVENT_CALLBACK_NAME = {\n  canplay: 'onAudioCanPlay',\n  durationchange: 'onAudioDurationChange',\n  ended: 'onAudioEnded',\n  error: 'onAudioError',\n  timeupdate: 'onAudioTimeUpdate',\n  playing: 'onAudioPlaying',\n  pause: 'onAudioPause',\n};\n\n/**\n * Implements basic audio playback.\n * Example usage:\n * ```\n * audioModule.addHandle(handle);\n * audioModule.setUrl(handle, url);\n * audioModule._setOnAudioReadyCallback(handle, function() {\n *   audioModule.play(handle);\n * });\n * audioModule.load(handle);\n * ```\n *\n * @class RCTAudioModule\n * @extends Module\n */\nexport default class RCTAudioModule extends Module {\n  audioContext: VRAudioContext | null;\n  supportedFormats: Array<string>;\n  _audioDefs: {[handle: string]: AudioDef};\n  _components: {[handle: string]: VRAudioComponent};\n  _mediaEventCallbacks: {\n    [handle: string]: {[eventType: string]: Array<(handle: string, event: MediaEvent) => void>},\n  };\n  _rnctx: ReactNativeContext;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('RCTAudioModule');\n    this.audioContext = VRAudioContext.supported() ? new VRAudioContext() : null;\n    this.supportedFormats = getSupportedFormats() || [];\n    this._audioDefs = {};\n    this._components = {};\n    this._rnctx = rnctx;\n    this._mediaEventCallbacks = {};\n  }\n\n  /**\n   * Add a new handle to the audio module\n   * @param {string} handle - The audio handle.\n   * @param {object} audioConfig - Optional audio configuration.\n   */\n  addHandle(handle: string, audioConfig: AudioConfig = {}) {\n    if (!this.audioContext) {\n      return;\n    }\n    const component = new VRAudioComponent(this.audioContext, audioConfig);\n    this._components[handle] = component;\n    this._audioDefs[handle] = this._createAudioDef();\n    this._mediaEventCallbacks[handle] = {};\n    component.onMediaEvent = this._onMediaEvent.bind(this, handle);\n  }\n\n  _createAudioDef(): AudioDef {\n    return {\n      streamingType: 'buffer',\n    };\n  }\n\n  _onMediaEvent(handle: string, event: Object) {\n    const eventType = event.type;\n    if (MEDIA_EVENT_CALLBACK_NAME[eventType]) {\n      const callbackName = MEDIA_EVENT_CALLBACK_NAME[eventType];\n      const mediaEvent = new MediaEvent(event);\n      // Emit media event to react\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', [callbackName, handle, mediaEvent]);\n\n      // Emit media event to native side\n      const listeners = this._mediaEventCallbacks[handle]\n        ? this._mediaEventCallbacks[handle][eventType]\n        : null;\n      if (listeners) {\n        listeners.forEach(listener => listener(handle, mediaEvent));\n      }\n    }\n  }\n\n  // Add listener to media events on native side\n  _addMediaEventListener(handle: string, eventType: string, listener: any) {\n    if (!this._mediaEventCallbacks[handle]) {\n      console.warn(\n        'RCTAudioModule.addMediaEventListener: ' +\n          `can't add listener on a not exist handle: ${handle}`\n      );\n      return;\n    }\n\n    if (!MEDIA_EVENT_CALLBACK_NAME[eventType]) {\n      console.warn(\n        'RCTAudioModule.addMediaEventListener: ' +\n          `can't add listener on a not supported eventType: ${eventType}`\n      );\n      return;\n    }\n\n    if (!this._mediaEventCallbacks[handle][eventType]) {\n      this._mediaEventCallbacks[handle][eventType] = [];\n    }\n\n    const listeners = this._mediaEventCallbacks[handle][eventType];\n    if (listeners.indexOf(listener) === -1) {\n      listeners.push(listener);\n    }\n  }\n\n  // Remove listener to media events on native side\n  _removeMediaEventListener(handle: string, eventType: string, listener: any) {\n    if (!this._mediaEventCallbacks[handle] || !this._mediaEventCallbacks[handle][eventType]) {\n      return;\n    }\n    const listeners = this._mediaEventCallbacks[handle][eventType];\n    if (listeners) {\n      const index = listeners.indexOf(listener);\n      if (index !== -1) {\n        listeners.splice(index, 1);\n      }\n    }\n  }\n\n  /**\n   * Set the audio url\n   * @param {string} handle - The audio handle.\n   */\n  setUrl(handle: string, url: string) {\n    this._audioDefs[handle].src = url;\n  }\n\n  /**\n   * load the audio\n   * @param {string} handle - The audio handle.\n   */\n  load(handle: string) {\n    this._components[handle].setAudio(this._audioDefs[handle]);\n  }\n\n  /**\n   * play the audio\n   * @param {string} handle - The audio handle.\n   */\n  play(handle: string) {\n    this._components[handle].play();\n  }\n\n  /**\n   * seek to a position in an audio\n   * @param {string} handle - The audio handle.\n   * @param {number} position - The audio position to seek to\n   */\n  seekTo(handle: string, position: number) {\n    this._components[handle].seekTo(position);\n  }\n\n  /**\n   * pause the audio\n   * @param {string} handle - The audio handle.\n   */\n  pause(handle: string) {\n    this._components[handle].pause();\n  }\n\n  /**\n   * stop the audio\n   * @param {string} handle - The audio handle.\n   */\n  stop(handle: string) {\n    this._components[handle].stop();\n  }\n\n  /**\n   * unload the audio\n   * @param {string} handle - The audio handle.\n   */\n  unload(handle: string) {\n    this._components[handle].dispose();\n    delete this._components[handle];\n    delete this._audioDefs[handle];\n    delete this._mediaEventCallbacks[handle];\n  }\n\n  /**\n   * Set location of the sound source within the scene.\n   * @param {string} handle - The audio handle.\n   * @param {array} position - world position of the sound source, in x, y, z order.\n   */\n  setPosition(handle: string, position: [number, number, number]) {\n    const vec = new THREE.Vector3();\n    vec.fromArray(position);\n    this._components[handle].position = vec;\n  }\n\n  /**\n   * Set volume of the sound source within the scene.\n   * @param {string} handle - The audio handle.\n   * @param {number} volume - volume\n   */\n  setVolume(handle: string, volume: number) {\n    if (typeof volume !== 'number') {\n      console.warn('AudioModule setVolume expected args (handle: string, volume: number)');\n      return;\n    }\n    this._components[handle].volume = volume;\n  }\n\n  /**\n   * Set the muted attributed of the audio\n   * @param {string} handle - The audio handle.\n   * @param {boolean} muted - Whether the audio should be muted.\n   */\n  setMuted(handle: string, muted: boolean) {\n    this._components[handle].muted = muted;\n  }\n\n  /**\n   * Update the `audioContext.listener` with the current camera position.\n   * Should be called on every frame.\n   * @param {object} camera - camera being used to render the scene\n   */\n  frame(camera: any) {\n    if (this.audioContext) {\n      this.audioContext.frame(camera);\n    }\n    for (const key in this._components) {\n      this._components[key].frame();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-present, Oculus, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\nconst FORMATS = {\n  mp3: 'audio/mpeg; codecs=\"mp3\"',\n  m4a: 'audio/aac',\n  ogg: 'audio/ogg; codecs=\"vorbis\"',\n  wav: 'audio/wav; codecs=\"1\"',\n  webm: 'audio/webm; codecs=\"vorbis\"',\n};\n\nlet supportCache = null;\n\nexport default function getSupportedFormats() {\n  if (supportCache) {\n    return supportCache;\n  }\n\n  const audio = document.createElement('audio');\n  supportCache = [];\n  for (const type in FORMATS) {\n    const canPlay = audio.canPlayType(FORMATS[type]);\n    if (canPlay.length && canPlay !== 'no') {\n      supportCache.push(type);\n    }\n  }\n\n  return supportCache;\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport VRAudioBufferSource from './VRAudioBufferSource';\nimport * as THREE from 'three';\n\nimport type {AudioConfig, AudioDef} from './AudioTypes';\nimport type VRAudioContext from './VRAudioContext';\nimport type {MediaEvent} from './VRAudioBufferSource';\nimport type {Vector3, Euler} from 'three';\n\nconst DEFAULT_VOLUME = 1.0;\nconst DEFAULT_PANNING_MODEL = 'HRTF';\nconst DEFAULT_DISTANCE_MODEL = 'inverse';\nconst DEFAULT_CONE_INNER_ANGLE = 60;\nconst DEFAULT_CONE_OUTER_ANGLE = 120;\nconst DEFAULT_CONE_OUTER_GAIN = 0.25;\n\n/**\n * The basic audio player\n */\nexport default class VRAudioComponent {\n  audioConfig: AudioConfig;\n  audioDef: {streamingType: any, src: any};\n  onMediaEvent: ?(MediaEvent) => void;\n  _gain: GainNode;\n  _panner: ?PannerNode;\n  _position: Vector3;\n  _source: ?VRAudioBufferSource;\n  _rotation: Euler;\n  _vrAudioContext: VRAudioContext;\n  _volume: number;\n  _muted: boolean;\n\n  constructor(vrAudioContext: VRAudioContext, audioConfig: AudioConfig) {\n    this._vrAudioContext = vrAudioContext;\n    this.audioConfig = audioConfig;\n\n    this._position = new THREE.Vector3(0, 0, 0);\n    this._rotation = new THREE.Euler(0, 0, 0, 'XYZ');\n\n    this._volume = DEFAULT_VOLUME;\n    this._muted = false;\n\n    this._gain = this._vrAudioContext.getWebAudioContext().createGain();\n    this.updateGainValue();\n\n    // Only create a panner node when position or rotation is set.\n    // Otherwise, default to non-spatialized audio.\n    this._panner = undefined;\n\n    this.onMediaEvent = undefined;\n    (this: any)._onMediaEvent = this._onMediaEvent.bind(this);\n  }\n\n  _setAudioDef(audioDef: AudioDef) {\n    this.audioDef = {\n      streamingType: audioDef.streamingType,\n      src: audioDef.src,\n    };\n  }\n\n  _onMediaEvent(event: MediaEvent) {\n    if (typeof this.onMediaEvent === 'function') {\n      this.onMediaEvent(event);\n    }\n  }\n\n  _createPanner() {\n    const audioConfig = this.audioConfig;\n    this._panner = this._vrAudioContext.getWebAudioContext().createPanner();\n    this._panner.panningModel = audioConfig.panningModel\n      ? audioConfig.panningModel\n      : DEFAULT_PANNING_MODEL;\n    this._panner.distanceModel = audioConfig.distanceModel\n      ? audioConfig.distanceModel\n      : DEFAULT_DISTANCE_MODEL;\n    this._panner.coneInnerAngle = audioConfig.coneInnerAngle\n      ? audioConfig.coneInnerAngle\n      : DEFAULT_CONE_INNER_ANGLE;\n    this._panner.coneOuterAngle = audioConfig.coneOuterAngle\n      ? audioConfig.coneOuterAngle\n      : DEFAULT_CONE_OUTER_ANGLE;\n    this._panner.coneOuterGain = audioConfig.coneOuterGain\n      ? audioConfig.coneOuterGain\n      : DEFAULT_CONE_OUTER_GAIN;\n  }\n\n  _connectNodes() {\n    const nodes = [];\n    if (this._source) {\n      const srcNode = this._source.getSourceNode();\n      if (srcNode) {\n        nodes.push(srcNode);\n      }\n    }\n    if (this._gain) {\n      nodes.push(this._gain);\n    }\n    if (this._panner) {\n      nodes.push(this._panner);\n    }\n    for (let i = 0; i < nodes.length - 1; i++) {\n      nodes[i].connect(nodes[i + 1]);\n    }\n    if (nodes.length > 0) {\n      const destNode = this._vrAudioContext.getWebAudioContext().destination;\n      nodes[nodes.length - 1].connect(destNode);\n    }\n  }\n\n  _disconnectNodes() {\n    if (this._gain) {\n      this._gain.disconnect();\n    }\n    if (this._panner) {\n      this._panner.disconnect();\n    }\n  }\n\n  _freeSource() {\n    if (this._source) {\n      this._source.dispose();\n      this._source = undefined;\n    }\n  }\n\n  setAudio(audioDef: AudioDef) {\n    this._disconnectNodes();\n    this._freeSource();\n    this._setAudioDef(audioDef);\n\n    this._source = new VRAudioBufferSource(this._vrAudioContext);\n    this._source.onMediaEvent = this._onMediaEvent;\n\n    this._source.initializeAudio(this.audioDef.src);\n  }\n\n  play() {\n    if (this._source) {\n      const source = this._source;\n      this._disconnectNodes();\n      source.play();\n      this._connectNodes();\n    }\n  }\n\n  seekTo(playbackTime: number) {\n    if (this._source) {\n      const source = this._source;\n      this._disconnectNodes();\n      source.seekTo(playbackTime);\n      if (source.isPlaying) {\n        this._connectNodes();\n      }\n    }\n  }\n\n  pause() {\n    if (this._source) {\n      this._source.pause();\n      this._disconnectNodes();\n    }\n  }\n\n  stop() {\n    if (this._source) {\n      this._source.stop();\n      this._disconnectNodes();\n    }\n  }\n\n  updateGainValue() {\n    const gain = this._muted ? 0 : this._volume;\n    this._gain.gain.value = gain;\n  }\n\n  frame() {\n    if (this._source) {\n      this._source.frame();\n    }\n  }\n\n  dispose() {\n    this._disconnectNodes();\n    this._freeSource();\n    this.onMediaEvent = undefined;\n  }\n\n  get position(): Vector3 {\n    return this._position;\n  }\n\n  set position(value: Vector3) {\n    if (!this._panner) {\n      this._createPanner();\n    }\n    this._position.copy(value);\n    if (this._panner) {\n      this._panner.setPosition(this._position.x, this._position.y, this._position.z);\n    }\n  }\n\n  get rotation(): Euler {\n    return this._rotation;\n  }\n\n  set rotation(value: Euler) {\n    if (!this._panner) {\n      this._createPanner();\n    }\n    this._rotation.copy(value);\n    const front = new THREE.Vector3(0, 0, -1);\n    front.applyEuler(this._rotation);\n    if (this._panner) {\n      this._panner.setOrientation(front.x, front.y, front.z);\n    }\n  }\n\n  get volume(): number {\n    return this._volume;\n  }\n\n  set volume(value: number) {\n    this._volume = value;\n    this.updateGainValue();\n  }\n\n  get muted(): boolean {\n    return this._muted;\n  }\n\n  set muted(value: boolean) {\n    this._muted = value;\n    this.updateGainValue();\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport * as VRAudioBufferManager from './VRAudioBufferManager';\nimport MediaError from './MediaError';\n\nimport type VRAudioContext from './VRAudioContext';\n\ntype MediaEventType =\n  | 'canplay'\n  | 'ended'\n  | 'durationchange'\n  | 'timeupdate'\n  | 'pause'\n  | 'playing'\n  | 'error';\n\nexport type MediaEvent = {\n  type: MediaEventType,\n  timeStamp: number,\n  target: any,\n};\n\n/**\n * The source using AudioBufferSourceNode\n */\nexport default class VRAudioBufferSource {\n  _buffer: ?AudioBuffer;\n  _sourceNode: void | AudioBufferSourceNode;\n  _vrAudioContext: VRAudioContext;\n  onMediaEvent: void | ((e: MediaEvent) => void);\n  url: string;\n  _playbackTime: number;\n  _startTime: number;\n  _isPlaying: boolean;\n  _error: ?MediaError;\n  _ended: boolean;\n\n  constructor(vrAudioContext: VRAudioContext) {\n    this._vrAudioContext = vrAudioContext;\n    this._playbackTime = 0;\n    this._startTime = 0;\n    this._isPlaying = false;\n    this._error = null;\n    this._ended = false;\n    this.onMediaEvent = undefined;\n  }\n\n  initializeAudio(url: string) {\n    // release old reference\n    if (this.url && this._buffer) {\n      VRAudioBufferManager.releaseRef(this.url);\n    }\n    // release old buffer\n    this.stopSourceNode();\n    this._playbackTime = 0;\n    this._buffer = null;\n    this._error = null;\n    this._ended = false;\n\n    this.url = url;\n    VRAudioBufferManager.fetch(\n      url,\n      this._vrAudioContext,\n      (buffer: ?AudioBuffer, error: ?MediaError) => {\n        if (error) {\n          console.warn('Failed to fetch audio:', url);\n          this._error = error;\n          this._onMediaEvent(this.createMediaEvent('error'));\n        } else {\n          this._buffer = buffer;\n          this._onMediaEvent(this.createMediaEvent('canplay'));\n          this._onMediaEvent(this.createMediaEvent('durationchange'));\n        }\n      }\n    );\n  }\n\n  createMediaEvent(type: MediaEventType): MediaEvent {\n    const duration = this._buffer ? this._buffer.duration : 0;\n    const currentTime = this._isPlaying\n      ? this._vrAudioContext.getWebAudioContext().currentTime - this._startTime + this._playbackTime\n      : this._playbackTime;\n    return {\n      type: type,\n      timeStamp: Date.now(),\n      target: {\n        currentTime: currentTime,\n        duration: duration,\n        ended: this._ended,\n        error: this._error,\n      },\n    };\n  }\n\n  getSourceNode() {\n    return this._sourceNode;\n  }\n\n  _onMediaEvent(event: MediaEvent) {\n    if (typeof this.onMediaEvent === 'function') {\n      this.onMediaEvent(event);\n    }\n  }\n\n  play() {\n    if (this._isPlaying) return;\n    this.playSourceNode();\n    this._onMediaEvent(this.createMediaEvent('playing'));\n  }\n\n  playSourceNode() {\n    // Every time play a buffered audio, a new buffer source node need to be created\n    this.stopSourceNode();\n    const sourceNode = this._vrAudioContext.getWebAudioContext().createBufferSource();\n    this._sourceNode = sourceNode;\n    sourceNode.onended = () => {\n      this.stopSourceNode();\n      this._playbackTime = 0;\n      this._ended = true;\n      this._onMediaEvent(this.createMediaEvent('ended'));\n    };\n    if (!this._buffer) {\n      console.warn('play() called before audio loaded for url', this.url);\n      return;\n    }\n    sourceNode.buffer = this._buffer;\n    sourceNode.start(0, this._playbackTime);\n    this._ended = false;\n    this._isPlaying = true;\n    this._startTime = this._vrAudioContext.getWebAudioContext().currentTime;\n  }\n\n  seekTo(playbackTime: number) {\n    if (this._buffer) {\n      playbackTime = playbackTime || 0;\n      // out of range\n      if (playbackTime < -this._buffer.duration || playbackTime > this._buffer.duration) {\n        console.warn('seekTo() time out of range: ' + playbackTime);\n        playbackTime = 0;\n      } else if (playbackTime < 0) {\n        playbackTime = this._buffer.duration + playbackTime;\n      }\n\n      if (this._isPlaying) {\n        this.stopSourceNode();\n        this._playbackTime = playbackTime;\n        this.playSourceNode();\n      } else {\n        this._playbackTime = playbackTime;\n      }\n    }\n  }\n\n  pause() {\n    if (!this._isPlaying) return;\n\n    this.stopSourceNode();\n    this._playbackTime =\n      this._vrAudioContext.getWebAudioContext().currentTime - this._startTime + this._playbackTime;\n    this._onMediaEvent(this.createMediaEvent('pause'));\n  }\n\n  stop() {\n    if (!this._isPlaying) return;\n\n    this.stopSourceNode();\n    this._playbackTime = 0;\n    this._ended = true;\n    this._onMediaEvent(this.createMediaEvent('ended'));\n  }\n\n  stopSourceNode() {\n    const sourceNode = this._sourceNode;\n    if (sourceNode) {\n      sourceNode.stop();\n      sourceNode.disconnect();\n      this._sourceNode = undefined;\n    }\n    this._isPlaying = false;\n  }\n\n  frame() {\n    if (this._isPlaying) {\n      this._onMediaEvent(this.createMediaEvent('timeupdate'));\n    }\n  }\n\n  dispose() {\n    this.stopSourceNode();\n    if (this.url && this._buffer) {\n      VRAudioBufferManager.releaseRef(this.url);\n    }\n    this.onMediaEvent = undefined;\n  }\n\n  get isPlaying(): boolean {\n    return this._isPlaying;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\nimport {MEDIA_ERR_NETWORK, MEDIA_ERR_DECODE, default as MediaError} from './MediaError';\n\nimport type VRAudioContext from './VRAudioContext';\n\ntype OnLoadHandler = (buffer: ?AudioBuffer, error: ?MediaError) => void;\n\n// A simple dictionary cache and a simple request batch\n// TODO: we should use expire time to update/clean cache\nconst _cache: {\n  [key: string]: {\n    buffer: AudioBuffer,\n    ref: number,\n  },\n} = {};\nconst _pendingRequest: {[key: string]: Array<OnLoadHandler>} = {};\n\nexport function fetch(url: string, audioContext: VRAudioContext, onLoad: OnLoadHandler) {\n  if (_cache[url]) {\n    // already in cache\n    _cache[url].ref++;\n    onLoad(_cache[url].buffer, null);\n  }\n  if (!_pendingRequest[url]) {\n    // new request\n    _pendingRequest[url] = [onLoad];\n\n    const xhr = new XMLHttpRequest();\n    xhr.open('GET', url);\n    xhr.responseType = 'arraybuffer';\n\n    xhr.onload = function() {\n      if (xhr.status === 200) {\n        audioContext.getWebAudioContext().decodeAudioData(\n          xhr.response,\n          function(buffer: AudioBuffer) {\n            _onRequestSucceed(url, buffer);\n          },\n          function(message) {\n            _onRequestError(\n              url,\n              new MediaError(\n                MEDIA_ERR_DECODE,\n                '[VRAudioBufferSource] Decoding failure: ' + url + ' (' + message + ')'\n              )\n            );\n          }\n        );\n      } else {\n        _onRequestError(\n          url,\n          new MediaError(\n            MEDIA_ERR_NETWORK,\n            '[VRAudioBufferSource] XHR Error: ' + url + ' (' + xhr.statusText + ')'\n          )\n        );\n      }\n    };\n\n    xhr.onerror = function(event) {\n      _onRequestError(\n        url,\n        new MediaError(MEDIA_ERR_NETWORK, '[VRAudioBufferSource] XHR Network failure: ' + url)\n      );\n    };\n\n    xhr.send();\n  } else {\n    _pendingRequest[url].push(onLoad);\n  }\n}\n\nexport function releaseRef(url: string) {\n  if (_cache[url]) {\n    _cache[url].ref--;\n    if (_cache[url].ref <= 0) {\n      delete _cache[url];\n    }\n  }\n}\n\nfunction _onRequestSucceed(url: string, buffer: AudioBuffer) {\n  const pendingRequest = _pendingRequest[url];\n  delete _pendingRequest[url];\n  _cache[url] = {\n    buffer: buffer,\n    ref: pendingRequest.length,\n  };\n  pendingRequest.map(_onLoad => {\n    _onLoad(_cache[url].buffer, null);\n  });\n}\n\nfunction _onRequestError(url: string, error: MediaError) {\n  const pendingRequest = _pendingRequest[url];\n  delete _pendingRequest[url];\n  pendingRequest.map(_onLoad => {\n    _onLoad(null, error);\n  });\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Custom media errors class for audio, correspond to HTML media error\n */\n\nexport const MEDIA_ERR_ABORTED = 1; // W3C error code, the fetching was aborted by the user's request.\nexport const MEDIA_ERR_NETWORK = 2; // W3C error code, the fetching was failed by network error.\nexport const MEDIA_ERR_DECODE = 3; // W3C error code, an error occurred while trying to decode the media.\nexport const MEDIA_ERR_SRC_NOT_SUPPORTED = 4; // W3C error code, the media has been found to be unsuitable.\n\nexport default class MediaError {\n  code: number;\n  message: string;\n\n  constructor(code: number, message: string) {\n    this.code = code;\n    this.message = message;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport * as THREE from 'three';\n\nimport type {Camera} from 'three';\n\n/**\n * The basic wrapper of audio context in VR\n */\n\nconst IS_SUPPORTED =\n  window.hasOwnProperty('webkitAudioContext') || window.hasOwnProperty('AudioContext');\nconst ContextConstructor = IS_SUPPORTED ? window.AudioContext || window.webkitAudioContext : null;\nif (window.hasOwnProperty('webkitAudioContext') && !window.hasOwnProperty('AudioContext')) {\n  console.log('Outdated version of Web Audio API detected.');\n}\n\nexport default class VRAudioContext {\n  _context: AudioContext;\n\n  constructor() {\n    if (IS_SUPPORTED && typeof ContextConstructor === 'function') {\n      this._context = new ContextConstructor();\n    } else {\n      throw new Error('Cannot create VRAudioContext, AudioContext is not supported');\n    }\n  }\n\n  static supported() {\n    return IS_SUPPORTED;\n  }\n\n  getWebAudioContext() {\n    return this._context;\n  }\n\n  frame(camera: Camera) {\n    if (!this._context) {\n      return;\n    }\n    const listener = this._context.listener;\n    const origin = camera.localToWorld(new THREE.Vector3(0, 0, 0));\n    const front = camera.localToWorld(new THREE.Vector3(0, 0, -1)).sub(origin).normalize();\n    const up = camera.localToWorld(new THREE.Vector3(0, 1, 0)).sub(origin).normalize();\n    listener.setOrientation(front.x, front.y, front.z, up.x, up.y, up.z);\n    if (typeof listener.setPosition === 'function') {\n      // setPosition is deprecated\n      listener.setPosition(origin.x, origin.y, origin.z);\n    } else if (listener.positionX && listener.positionY && listener.positionZ) {\n      // new format is positionX, etc.\n      // Flow doesn't support these yet, change is in master though\n      (listener.positionX: any).value = origin.x;\n      (listener.positionY: any).value = origin.y;\n      (listener.positionZ: any).value = origin.z;\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RefCountCache from './RefCountCache';\n\nimport {Texture, TextureLoader} from 'three';\n\nexport type LocalTextureOptions = {\n  updateOnFrame?: boolean,\n};\n\n/**\n * TextureManager manages remote and in-memory Textures, and makes sure that\n * they are shared among meshes and images when appropriate.\n *\n * The caching strategy is twofold:\n *   - Any textures that are currently in use are kept in a ref-counting cache.\n *     When no more references to that resource remain, the texture is removed\n *     from that cache but not yet disposed.\n *   - From there, it moves to a queue of fixed size. As new entries come\n *     in, older entries are ejected, and the underlying Texture is finally\n *     disposed.\n * This makes sure that textures in use are always available, but also covers\n * cases where a single reference to a texture is unmounted and soon remounted.\n */\nexport default class TextureManager {\n  _customTextureLoads: {[url: string]: (Texture) => void};\n  _customTexturesWithUpdates: Array<Texture>;\n  _ejectionQueue: Array<string>;\n  _pendingTextures: {[url: string]: Promise<Texture>};\n  _queueSize: number;\n  _refCountCache: RefCountCache<boolean>;\n  _textureMap: {[url: string]: Texture};\n\n  constructor(queueSize: number = 10) {\n    this._queueSize = queueSize;\n    // Map of URL to Textures\n    this._textureMap = {};\n    // Map of URL to Promises that will be resolved when the texture loads\n    this._pendingTextures = {};\n    // Queue of recently-used Textures waiting to be ejected\n    this._ejectionQueue = [];\n    // Promise resolvers for requests that occur before a source is registered\n    this._customTextureLoads = {};\n    // Array of textures that need to be updated each frame\n    this._customTexturesWithUpdates = [];\n    // Reference-counting cache of Textures in use\n    this._refCountCache = new RefCountCache(\n      // cleanup method\n      path => {\n        // move texture to queue\n        this._ejectionQueue.push(path);\n        if (this._ejectionQueue.length > this._queueSize) {\n          const ejected = this._ejectionQueue.shift();\n          const tex = this._textureMap[ejected];\n          delete this._textureMap[ejected];\n          if (tex) {\n            tex.dispose();\n          }\n        }\n      }\n    );\n  }\n\n  /**\n   * Status methods, mostly for testing purposes\n   */\n  isTextureCached(url: string) {\n    return url in this._textureMap;\n  }\n\n  isTextureLoading(url: string) {\n    return url in this._pendingTextures;\n  }\n\n  isTextureReferenced(url: string) {\n    return this._refCountCache.has(url);\n  }\n\n  isTextureInEjectionQueue(url: string) {\n    return this._ejectionQueue.indexOf(url) > -1;\n  }\n\n  /**\n   * Load a Texture, returning a promise that is resolved when the Texture\n   * is ready. This method does not manage any reference counting - the\n   * component using the Texture should handle that as part of its lifecycle.\n   * If a texture has been cached, it immediately resolves.\n   * If other components are already waiting on the texture, hang on that Promise\n   * Else, create a Promise that will be resolved when the texture is loaded\n   */\n  getTextureForURL(url: string): Promise<Texture> {\n    if (this._textureMap[url]) {\n      // Already registered source, return the texture\n      return Promise.resolve(this._textureMap[url]);\n    }\n    if (this._pendingTextures[url]) {\n      // Other components are waiting on the source, wait on the same Promise\n      return this._pendingTextures[url];\n    }\n\n    if (url.startsWith('texture://')) {\n      // Local texture\n      const promise = new Promise((resolve, reject) => {\n        this._customTextureLoads[url] = resolve;\n      });\n      this._pendingTextures[url] = promise;\n      return promise;\n    }\n    // Network texture\n    const promise = new Promise((resolve, reject) => {\n      const loader = new TextureLoader();\n      loader.setCrossOrigin('anonymous');\n      loader.load(\n        url,\n        texture => {\n          this._textureMap[url] = texture;\n          delete this._pendingTextures[url];\n          resolve(texture);\n        },\n        undefined,\n        error => {\n          reject(error);\n        }\n      );\n    });\n    this._pendingTextures[url] = promise;\n    return promise;\n  }\n\n  addReference(url: string): void {\n    if (url.startsWith('texture://')) {\n      // We don't refcount in-memory textures\n      return;\n    }\n    if (this._refCountCache.has(url)) {\n      this._refCountCache.addReference(url);\n    } else {\n      const index = this._ejectionQueue.indexOf(url);\n      if (index > -1) {\n        // Promote it from the ejection queue\n        this._ejectionQueue.splice(index, 1);\n      }\n      this._refCountCache.addEntry(url, true);\n    }\n  }\n\n  removeReference(url: string): void {\n    if (url.startsWith('texture://')) {\n      // We don't refcount in-memory textures\n      return;\n    }\n    if (this._refCountCache.has(url)) {\n      this._refCountCache.removeReference(url);\n    }\n  }\n\n  /**\n   * Register a local (in-memory) texture source with a unique identifier.\n   */\n  registerLocalTextureSource(name: string, source: Element, options: LocalTextureOptions = {}) {\n    if (source instanceof HTMLCanvasElement) {\n      const tex = new Texture(source);\n      tex.needsUpdate = true;\n      const url = 'texture://' + name;\n      this._textureMap[url] = tex;\n      if (options.updateOnFrame) {\n        this._customTexturesWithUpdates.push(tex);\n      }\n      delete this._pendingTextures[url];\n      if (this._customTextureLoads[url]) {\n        this._customTextureLoads[url](tex);\n        delete this._customTextureLoads[url];\n      }\n    } else {\n      throw new Error('Unsupported texture source');\n    }\n  }\n\n  /**\n   * Run updates once per frame\n   */\n  frame() {\n    const textures = this._customTexturesWithUpdates;\n    for (let i = 0, length = textures.length; i < length; i++) {\n      textures[i].needsUpdate = true;\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\ntype CacheEntry<T> = {\n  refs: number,\n  state: T,\n};\n\nexport type CacheCleanupMethod<T> = (path: string, entry: T) => void;\n\n/**\n * RefCountCache is a basic cache that stores entries as long as there is an\n * external reference to them. When no objects remain referencing the cached\n * value, the entry is ejected.\n */\nexport default class RefCountCache<T> {\n  _cleanup: ?CacheCleanupMethod<T>;\n  _stateCache: {[path: string]: CacheEntry<T>};\n\n  constructor(cleanup: ?CacheCleanupMethod<T>) {\n    this._cleanup = cleanup;\n    this._stateCache = {};\n  }\n\n  has(path: string): boolean {\n    return !!this._stateCache[path];\n  }\n\n  get(path: string): T {\n    const entry = this._stateCache[path];\n    if (!entry) {\n      throw new Error(`RefCountCache entry for ${path} not found`);\n    }\n    return entry.state;\n  }\n\n  addEntry(path: string, state: T) {\n    const prev = this._stateCache[path];\n    if (prev) {\n      return;\n    }\n    this._stateCache[path] = {\n      refs: 1,\n      state: state,\n    };\n  }\n\n  addReference(path: string): number {\n    const prev = this._stateCache[path];\n    if (!prev) {\n      return 0;\n    }\n    prev.refs++;\n    return prev.refs;\n  }\n\n  removeReference(path: string): number {\n    const prev = this._stateCache[path];\n    if (!prev) {\n      return 0;\n    }\n    prev.refs--;\n    if (prev.refs <= 0) {\n      if (this._cleanup) {\n        this._cleanup(path, prev.state);\n      }\n      delete this._stateCache[path];\n    }\n    return Math.max(0, prev.refs);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\ntype Timer = {\n  callbackID: number,\n  duration: number,\n  jsSchedulingTime: number,\n  repeats: boolean,\n};\n\nconst IDLE_CALLBACK_THRESHOLD = 1; // Minimum idle execution time of 1ms\n\n/**\n * The Timing Module allows the browser client to synchronize React timers with\n * the frame rate of the client.\n * This module is internal to the runtime and not designed to be called directly\n * Timers to the React code are distributed by event messages sent via the\n * WebWorker using the React Native Context\n * @class Timing\n * @extends Module\n */\nexport default class Timing extends Module {\n  _rnctx: ReactNativeContext;\n  _sendIdleEvents: boolean;\n  _targetFrameDuration: number;\n  _timers: {[id: string]: Timer};\n\n  /**\n   * Constructs a Timing Module with a React Native Context\n   * The Context is used to trigger the registered timer callbacks on each frame\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('Timing');\n    this._timers = {};\n    this._rnctx = rnctx;\n    this._sendIdleEvents = false;\n    // Ideal frame size, in milliseconds\n    this._targetFrameDuration = 1000.0 / (rnctx.isLowLatency ? 90.0 : 60.0);\n  }\n\n  /**\n   * Creates a new timer, and associates it with a specific callback.\n   * @param callbackID - The callback triggered when this timer completes\n   * @param duration - The time before the timer completes, in milliseconds\n   * @param jsSchedulingTime - The baseline time to measure against\n   * @param repeats - Whether the timer repeats, or runs once\n   */\n  createTimer(callbackID: number, duration: number, jsSchedulingTime: number, repeats: boolean) {\n    const currentTimeMillis = Date.now();\n    const currentDateNowTimeMillis = jsSchedulingTime + 1000 / 60;\n    const adjustedDuration = Math.max(0.0, jsSchedulingTime - currentDateNowTimeMillis + duration);\n    const initialTargetTime = currentTimeMillis + adjustedDuration;\n    this._timers[String(callbackID)] = {\n      callbackID: callbackID,\n      duration: duration,\n      jsSchedulingTime: initialTargetTime,\n      repeats: repeats,\n    };\n  }\n\n  /**\n   * Removes the timer associated with a specific callback\n   * @paramID - callbackID associated with React\n   */\n  deleteTimer(callbackID: number) {\n    delete this._timers[String(callbackID)];\n  }\n\n  /**\n   * Enable or disable the sending of idle events on each frame\n   * When these are sent, they trigger requestIdleCallback callbacks on the\n   * React side.\n   * @param sendIdle - boolean flag to enable or disable sending idle events\n   */\n  setSendIdleEvents(sendIdle: boolean) {\n    this._sendIdleEvents = sendIdle;\n  }\n\n  /**\n   * Update all timers, triggering callbacks for timers that have completed,\n   * and cleaning up those that are not repeating.\n   */\n  frame(frameStart: number) {\n    const toRemove = [];\n    const timers = [];\n    const time = Date.now();\n    for (const timer in this._timers) {\n      const t = this._timers[timer];\n      if (t.jsSchedulingTime <= time) {\n        timers.push(this._timers[timer].callbackID);\n        if (t.repeats) {\n          t.jsSchedulingTime += t.duration;\n        } else {\n          toRemove.push(timer);\n        }\n      }\n    }\n    // timer information is distributed in a single message with mulitiple params\n    // which minimizes the bridge traffic when many timers are used\n    if (timers.length) {\n      this._rnctx.callFunction('JSTimers', 'callTimers', [timers]);\n    }\n\n    for (const timer of toRemove) {\n      delete this._timers[timer];\n    }\n  }\n\n  /**\n   * Check to see if there's enough time left in the frame execution to run\n   * idle callbacks. If there is, trigger them across the bridge.\n   * @param frameStart - A timestamp representing the start time of this frame,\n   *   used to determine whether there is any idle time left\n   */\n  idle(frameStart: number) {\n    if (!this._sendIdleEvents) {\n      return;\n    }\n    const now = window.performance ? performance.now() : Date.now();\n    const frameElapsed = now - frameStart;\n    if (this._targetFrameDuration - frameElapsed >= IDLE_CALLBACK_THRESHOLD) {\n      this._rnctx.callFunction('JSTimers', 'callIdleCallbacks', [\n        Date.now() - frameElapsed,\n      ]);\n    }\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBox from '../Views/Box';\nimport RCTCylinder from '../Views/Cylinder';\nimport RCTPlane from '../Views/Plane';\nimport RCTSphere from '../Views/Sphere';\nimport RCTImage from '../Views/Image';\nimport RCTView from '../Views/View';\nimport RCTPano from '../Views/Pano';\nimport RCTLiveEnvCamera from '../Views/LiveEnvCamera';\nimport RCTModel from '../Views/Model';\nimport RCTScene from '../Views/Scene';\nimport RCTSound from '../Views/Sound';\nimport RCTText from '../Views/Text';\nimport RCTRawText from '../Views/RawText';\nimport RCTVideo from '../Views/Video';\nimport RCTVideoPano from '../Views/VideoPano';\nimport RCTAmbientLight from '../Views/AmbientLight';\nimport RCTDirectionalLight from '../Views/DirectionalLight';\nimport RCTPointLight from '../Views/PointLight';\nimport RCTSpotLight from '../Views/SpotLight';\nimport RCTCylindricalPanel from '../Views/CylindricalPanel';\nimport RCTQuadPanel from '../Views/QuadPanel';\nimport RCTPrefetch from '../Views/Prefetch';\n\nimport Module from './Module';\nimport * as THREE from 'three';\nimport * as OVRUI from 'ovrui';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\nimport type RCTBaseView from '../Views/BaseView';\n\ntype Attributes = {[attr: string]: any};\nexport type CustomView = {\n  name: string,\n  view: Class<RCTBaseView>,\n};\ntype ViewDescription = {\n  NativeModules: {\n    [key: string]: string,\n  },\n};\n\n// the list of styles that don't invalidate layout uses black list as this is an optimization\n// and given that it is better to be conservative.\nconst STYLES_THAT_DONT_ALTER_LAYOUT = {\n  color: true,\n  backgroundColor: true,\n  transform: true,\n  borderColor: true,\n  opacity: true,\n};\n\n/**\n * Class that is used to receive React commands from JS and translate them into a\n * runtime native view hierarchy.\n * Some of the functions within this module are to be called externally and these\n * are marked public in their comment.\n * However the majority are to be called from React code through messages\n *\n * UIManager manages the view types available - which must be registered ahead on a react\n * context init - as well as being the module that handles the view and property\n * manipulations of React. The React version of the properties is considered to be the\n * source of truth and UIManager should respect these accordingly\n *\n * The asscociation of a view with the react version is via the react tag, a unique id\n * managed by the react code, the exeception is a root view tag which by contract is an\n * id which when divided by 10 there is a remainder of 1\n *\n * UIManager will also make the necessary calls to layout the views via css-layout\n * within the frame function. This is based on flexbox.\n * @class UIManager\n * @extends Module\n */\nexport default class UIManager extends Module {\n  _rnctx: ReactNativeContext;\n  _guiSys: GuiSys;\n  customDirectEventTypes: {[event: string]: {registrationName: string}};\n  customBubblingEventTypes: {\n    [event: string]: {\n      phasedRegistrationNames: {bubbled: string, captured: string},\n    },\n  };\n  _views: {[tag: string]: RCTBaseView};\n  _viewTypes: {[tag: string]: string};\n  _viewCreator: {[name: string]: () => RCTBaseView};\n  _rootViews: {[tag: string]: RCTBaseView};\n  _viewsOfType: {[name: string]: {[tag: string]: RCTBaseView}};\n  _layoutAnimation: any;\n  _lastFrameStart: number;\n\n  /**\n   * Construct a UIManager with a React Native Context and an OVRUI GuiSys.\n   */\n  constructor(rnctx: ReactNativeContext, guiSys: GuiSys, customViews: Array<CustomView> = []) {\n    super('UIManager');\n    this._rnctx = rnctx;\n    this._guiSys = guiSys;\n\n    this.customDirectEventTypes = {\n      topLayout: {registrationName: 'onLayout'},\n      topLoadStart: {registrationName: 'onLoadStart'},\n      topLoad: {registrationName: 'onLoad'},\n      topLoadEnd: {registrationName: 'onLoadEnd'},\n      topEnter: {registrationName: 'onEnter'},\n      topExit: {registrationName: 'onExit'},\n      topMove: {registrationName: 'onMove'},\n      // Media Events\n      topDurationChange: {registrationName: 'onDurationChange'},\n      topEnded: {registrationName: 'onEnded'},\n      topTimeUpdate: {registrationName: 'onTimeUpdate'},\n      topPlayStatusChange: {registrationName: 'onPlayStatusChange'},\n    };\n    this.customBubblingEventTypes = {\n      topChange: {\n        phasedRegistrationNames: {\n          bubbled: 'onChange',\n          captured: 'onChangeCapture',\n        },\n      },\n      topInput: {\n        phasedRegistrationNames: {\n          bubbled: 'onInput',\n          captured: 'onInputCapture',\n        },\n      },\n      topHeadPose: {\n        phasedRegistrationNames: {\n          bubbled: 'onHeadPose',\n          captured: 'onHeadPoseCapture',\n        },\n      },\n    };\n\n    this._views = {};\n    this._viewTypes = {};\n    this._viewCreator = {};\n    this._rootViews = {};\n    this._viewsOfType = {};\n    this._layoutAnimation = null;\n    this.registerViewType('RCTView', RCTView.describe(), function() {\n      return new RCTView(guiSys);\n    });\n    this.registerViewType('LiveEnvCamera', RCTLiveEnvCamera.describe(), function() {\n      return new RCTLiveEnvCamera(guiSys);\n    });\n    this.registerViewType('RCTImageView', RCTImage.describe(), function() {\n      return new RCTImage(guiSys, rnctx);\n    });\n    this.registerViewType('Pano', RCTPano.describe(), function() {\n      return new RCTPano(guiSys, rnctx);\n    });\n    this.registerViewType('Model', RCTModel.describe(), function() {\n      return new RCTModel(guiSys, rnctx);\n    });\n    this.registerViewType('Scene', RCTScene.describe(), function() {\n      return new RCTScene(guiSys);\n    });\n    this.registerViewType('Sound', RCTSound.describe(), function() {\n      return new RCTSound(guiSys, rnctx);\n    });\n    this.registerViewType('RCTText', RCTText.describe(), function() {\n      return new RCTText(guiSys);\n    });\n    this.registerViewType('RCTRawText', RCTRawText.describe(), function() {\n      return new RCTRawText(guiSys);\n    });\n    this.registerViewType('Video', RCTVideo.describe(), function() {\n      return new RCTVideo(guiSys, rnctx);\n    });\n    this.registerViewType('VideoPano', RCTVideoPano.describe(), function() {\n      return new RCTVideoPano(guiSys, rnctx);\n    });\n    this.registerViewType('AmbientLight', RCTAmbientLight.describe(), function() {\n      return new RCTAmbientLight(guiSys);\n    });\n    this.registerViewType('DirectionalLight', RCTDirectionalLight.describe(), function() {\n      return new RCTDirectionalLight(guiSys);\n    });\n    this.registerViewType('PointLight', RCTPointLight.describe(), function() {\n      return new RCTPointLight(guiSys);\n    });\n    this.registerViewType('SpotLight', RCTSpotLight.describe(), function() {\n      return new RCTSpotLight(guiSys);\n    });\n    this.registerViewType('CylindricalPanel', RCTCylindricalPanel.describe(), function() {\n      return new RCTCylindricalPanel(guiSys);\n    });\n    this.registerViewType('QuadPanel', RCTQuadPanel.describe(), function() {\n      return new RCTQuadPanel(guiSys);\n    });\n    this.registerViewType('Box', RCTBox.describe(), function() {\n      return new RCTBox(guiSys, rnctx);\n    });\n    this.registerViewType('Cylinder', RCTCylinder.describe(), function() {\n      return new RCTCylinder(guiSys, rnctx);\n    });\n    this.registerViewType('Plane', RCTPlane.describe(), function() {\n      return new RCTPlane(guiSys, rnctx);\n    });\n    this.registerViewType('Sphere', RCTSphere.describe(), function() {\n      return new RCTSphere(guiSys, rnctx);\n    });\n    this.registerViewType('Prefetch', RCTPrefetch.describe(), function() {\n      return new RCTPrefetch(guiSys);\n    });\n\n    customViews.forEach(({name, view}) => {\n      this.registerViewType(name, view.describe(), function() {\n        return new view(guiSys);\n      });\n    });\n  }\n\n  /**\n   * Creates a new view of type under rootTag\n   * @param tag - Unique react tag id to create view with\n   * @param type - The type of view to create, must have been registered\n   * @param rootTag - the root React Tag to create this view under\n   * @param attr - object containing attributes to set\n   */\n  createView(tag: number, type: string, rootTag: number, attr: Attributes) {\n    const newView = this._viewCreator[type]();\n    this._views[String(tag)] = newView;\n    newView.UIManager = this;\n    newView.tag = tag;\n    // assign the tag to the three.js view if created\n    if (newView.view) {\n      newView.view.tag = tag;\n    }\n    newView.rootTag = rootTag;\n    // record the type of view created\n    this._viewTypes[String(tag)] = type;\n    // record the tags associated with type for later lookup\n    this._viewsOfType[type][String(tag)] = newView;\n    // assign the default properties to the view\n    this.updateView(tag, type, attr);\n    // force the view to be marked as dirty\n    this._views[String(tag)].makeDirty();\n    return this._views[String(tag)];\n  }\n\n  /**\n   * sets the children tags for tag\n   * Fast path for initial creation of views\n   * @param tag - Unique react tag id to allow look up of view object\n   * @param childrenTags - array of the the tag ids that will be children of tag\n   */\n  setChildren(tag: number, childrenTags: Array<number>) {\n    // look up the view\n    const viewToManage = this._views[String(tag)];\n    // iterate through the children\n    for (let i = 0; i < childrenTags.length; i++) {\n      // add viewToAdd as a child of viewToManage as index i\n      const viewToAdd = this._views[String(childrenTags[i])];\n      if (viewToAdd) {\n        viewToManage.addChild(i, viewToAdd);\n        viewToAdd.setParent(viewToManage);\n        // make sure the view is marked as dirty\n        viewToAdd.makeDirty();\n      }\n    }\n  }\n\n  /**\n   * manages children of a specific tag\n   * Handles moving, adding and removing with a specific order defined in\n   * the react code\n   * other than tag any value could be null\n   * @param tag - Unique react tag id to allow look up of view object\n   * @param moveFrom - array of indices of child of view tag to move from\n   * @param moveTo - array of indices of child of view tag to move to\n   * @param addChildTags - array of the tag ids that will be children of tag\n   * @param addAtIndices - array of the indices to add children at\n   * @param removeFrom - array of the indices in view of tag which should\n   *                     be removed and purged\n   */\n  manageChildren(\n    tag: number,\n    moveFrom: ?Array<number>,\n    moveTo: ?Array<number>,\n    addChildTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeFrom: Array<number>\n  ) {\n    const cssNodeToManage = this._views[String(tag)];\n    if (!cssNodeToManage) {\n      return;\n    }\n\n    // determine counts with checks for null\n    const numToMove = !moveFrom ? 0 : moveFrom.length;\n\n    // We treat moves as an add and a delete\n    const viewsToAdd = [];\n    const indicesToRemove = [];\n    const tagsToRemove = [];\n    const tagsToDelete = [];\n\n    // moves are based on a series of adds after removes\n    if (moveFrom && moveTo) {\n      for (let i = 0; i < moveFrom.length; i++) {\n        const moveFromIndex = moveFrom[i];\n        const tagToMove = cssNodeToManage.getChild(moveFromIndex).getTag();\n        viewsToAdd[i] = {\n          tag: tagToMove,\n          index: moveTo[i],\n        };\n        indicesToRemove[i] = moveFromIndex;\n        tagsToRemove[i] = tagToMove;\n      }\n    }\n\n    // add the rest of the adds\n    if (addChildTags) {\n      for (let i = 0; i < addChildTags.length; i++) {\n        const viewTagToAdd = addChildTags[i];\n        const indexToAddAt = addAtIndices[i];\n        viewsToAdd[numToMove + i] = {\n          tag: viewTagToAdd,\n          index: indexToAddAt,\n        };\n      }\n    }\n\n    // now add the required removes\n    if (removeFrom) {\n      for (let i = 0; i < removeFrom.length; i++) {\n        const indexToRemove = removeFrom[i];\n        const tagToRemove = cssNodeToManage.getChild(indexToRemove).getTag();\n        indicesToRemove[numToMove + i] = indexToRemove;\n        tagsToRemove[numToMove + i] = tagToRemove;\n        tagsToDelete[i] = tagToRemove;\n      }\n    }\n\n    // NB: moveFrom and removeFrom are both relative to the starting state of the View's children.\n    // moveTo and addAt are both relative to the final state of the View's children.\n    //\n    // 1) Sort the views to add and indices to remove by index\n    // 2) Iterate the indices being removed from high to low and remove them. Going high to low\n    //    makes sure we remove the correct index when there are multiple to remove.\n    // 3) Iterate the views being added by index low to high and add them. Like the view removal,\n    //    iteration direction is important to preserve the correct index.\n\n    viewsToAdd.sort(function(a, b) {\n      return a.index - b.index;\n    });\n    indicesToRemove.sort(function(a, b) {\n      return a - b;\n    });\n\n    // Apply changes to node hierarchy\n    // removing in the order last index to first index\n    for (let i = indicesToRemove.length - 1; i >= 0; i--) {\n      cssNodeToManage.removeChild(indicesToRemove[i]);\n    }\n\n    // add the new children\n    for (let i = 0; i < viewsToAdd.length; i++) {\n      const viewAtIndex = viewsToAdd[i];\n      const cssNodeToAdd = this._views[String(viewAtIndex.tag)];\n      cssNodeToManage.addChild(viewAtIndex.index, cssNodeToAdd);\n      cssNodeToAdd.setParent(cssNodeToManage);\n      cssNodeToAdd.makeDirty();\n    }\n\n    // finally purge the deleted views and their hierarchy\n    for (let i = 0; i < tagsToDelete.length; i++) {\n      this.purgeView(this._views[String(tagsToDelete[i])]);\n    }\n  }\n\n  /**\n   * registers the view type and the function to create the view\n   * @param name - name of view type to create should correspond to react register view code\n   * @param view - description of the view that includes the properties that it supports\n   * @param viewCreator - function that returns a created view\n   */\n  registerViewType(name: string, view: ViewDescription, viewCreator: () => RCTBaseView) {\n    // Flow doesn't like computed properties on classes\n    (this: any)[name] = view;\n    this._viewCreator[name] = viewCreator;\n    this._viewsOfType[name] = {};\n  }\n\n  /**\n   * applies the attributes in the attr object to the view\n   * @param tag - react tag id\n   * @param type - view type\n   * @param attr - object contained attributes to set\n   */\n  updateView(tag: number, type: string, attr: Attributes) {\n    const view = this._views[String(tag)];\n    let forceLayout = false;\n    for (const a in attr) {\n      // use the declaration of the NativeProps to determine if this\n      // attribute is a style type or property\n      if ((this: any)[type] && (this: any)[type].NativeProps[a]) {\n        view.props[a] = attr[a];\n      } else {\n        /* $FlowFixMe */\n        if (typeof view['_' + a] === 'function') {\n          /* $FlowFixMe */\n          view['_' + a](attr[a]);\n        } else {\n          view.style[a] = attr[a];\n        }\n        // check attribute is not in black list before forcing layout\n        forceLayout = forceLayout || !STYLES_THAT_DONT_ALTER_LAYOUT[a];\n      }\n    }\n    // force a layout if any layout styles are applied\n    if (forceLayout) {\n      view.makeDirty();\n    }\n    // call update of view if required\n    if (typeof view.updateView === 'function') {\n      view.updateView();\n    }\n  }\n\n  /**\n   * removes the view and the hierarchy of child views under it\n   * @param param0 -\n   */\n  purgeView(view: RCTBaseView) {\n    // make sure any parent views are marked as dirty\n    view.makeDirty();\n    // shutdown the view making sure any resources are released\n    view.dispose();\n    // delete entries in looks\n    const type = this._viewTypes[String(view.tag)];\n    delete this._viewTypes[String(view.tag)];\n    delete this._views[String(view.tag)];\n    delete this._viewsOfType[type][String(view.tag)];\n    // purge children\n    for (let i = 0; i < view.children.length; i++) {\n      this.purgeView(view.children[i]);\n    }\n    // clear the array\n    view.children = [];\n  }\n\n  /**\n   * creates a root view, this should be called by the context to\n   * ensure the strict tag ID is used\n   * root view tags IDs are always (multiples of ten + one)\n   * @param tag - react tag to use\n   */\n  createRootView(tag: number, container?: SceneGraphNode) {\n    // create a View with defaults\n    this._rootViews[String(tag)] = this.createView(tag, 'RCTView', tag, {});\n    this._guiSys.add(this._rootViews[String(tag)].view, container);\n  }\n\n  /**\n   * remove root view and all child views\n   * @param tag - react tag to delete\n   */\n  removeRootView(tag: number) {\n    const view = this._views[String(tag)];\n    if (!view) {\n      return;\n    }\n\n    // delete entry in lookup\n    delete this._rootViews[String(tag)];\n    this.purgeView(view);\n  }\n\n  /**\n   * moves a view newReactTag to the space filled by reactTag\n   * add remove reactTag\n   * @param reactTag - react tag to remove\n   * @param newReactTag - react tag to move to location of reactTag\n   */\n  replaceExistingNonRootView(reactTag: number, newReactTag: number) {\n    const view = this._views[String(reactTag)];\n    if (!view) {\n      return;\n    }\n    view.makeDirty();\n\n    const superView = view.getParent();\n    if (!superView) {\n      return;\n    }\n\n    const indexOfView = superView.getIndexOf(view);\n    if (indexOfView === -1) {\n      return;\n    }\n\n    // call through to manageChildren to do the general work\n    this.manageChildren(\n      superView.getTag(),\n      null,\n      null,\n      [newReactTag],\n      [indexOfView],\n      [indexOfView]\n    );\n  }\n\n  /**\n   * removes all the children of view tag\n   * @param tag - read Tag of view\n   */\n  removeSubviewsFromContainerWithID(tag: number) {\n    const view = this._views[String(tag)];\n    if (!view) {\n      return;\n    }\n    // make sure view at it's parents are marked dirty to cause relayout\n    view.makeDirty();\n\n    const removeIndex = [];\n    for (let childIndex = 0; childIndex < view.getChildCount(); childIndex++) {\n      removeIndex.push(childIndex);\n    }\n\n    for (let i = removeIndex.length - 1; i >= 0; i--) {\n      const childView = view.getChild(removeIndex[i]);\n      this.purgeView(childView);\n      childView.setParent(null);\n      view.removeChild(removeIndex[i]);\n    }\n  }\n\n  /**\n   * Apply the computed layout to the view and it's parents\n   * @param view - view object to operate on\n   */\n  presentLayout(view: RCTBaseView) {\n    // apply the view specific layout changes\n    if (view.presentLayout) {\n      view.presentLayout();\n    }\n    view.isDirty = false;\n    for (let i = 0; i < view.children.length; i++) {\n      this.presentLayout(view.children[i]);\n    }\n  }\n\n  /**\n   * frame update for the UI\n   */\n  frame(frameStart: number) {\n    // call frame function for each view\n    // optimization is to register interest in update\n    if (this._lastFrameStart < 0) {\n      this._lastFrameStart = frameStart;\n    }\n    const deltaTime = frameStart - this._lastFrameStart;\n    this._lastFrameStart = frameStart;\n    for (const tag in this._views) {\n      this._views[tag].frame(frameStart, deltaTime);\n    }\n    // layout the views\n    this.layout();\n  }\n\n  /**\n   * layout the views using css-layout\n   */\n  layout() {\n    // loop through all root views\n    for (const tag in this._rootViews) {\n      // This relies on css-layout.js, which is a subset of flexbox layout algorithm (based on comments).\n      // Called recursively to layout subtrees of flexbox tree. Uses node.style.\n      const rootView = this._rootViews[tag];\n      // use css-layout flex box to apply new flow\n      rootView.YGNode.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR);\n      // present the layout to the view implementations from root to child\n      this.presentLayout(rootView);\n    }\n  }\n\n  /**\n   * Returns the transform for the first ReactVR <Scene> within the rootTag,\n   * or null if there is no <Scene> or the <Scene> has no transform property.\n   * @param rootTag - root view tag to look for Scene under\n   */\n  getSceneCameraTransform(rootTag: number) {\n    const scenes = this._viewsOfType['Scene'];\n    if (!scenes || Object.keys(scenes).length === 0) {\n      return null;\n    }\n    const scene = (function(scenes, rootTag) {\n      for (const tag in scenes) {\n        const item = scenes[tag];\n        if (item.rootTag === rootTag) {\n          return item;\n        }\n      }\n    })(scenes, rootTag);\n    return scene && scene.style && scene.style.transform;\n  }\n\n  /**\n   * Returns the layers view\n   * @param rootTag - root view tag to look for Scene under\n   */\n  getLayers() {\n    const CylindricalPanels = this._viewsOfType['CylindricalPanel'];\n    return CylindricalPanels;\n  }\n\n  /**\n   * Configure the cursor\n   */\n  setCursorVisibility(visibility: boolean) {\n    this._guiSys.setCursorVisibility(visibility);\n  }\n\n  /**\n   * Util function that given text requirements returns the height of the text\n   */\n  measureTextHeight(\n    text: string,\n    fontSize: number,\n    width: number,\n    maxLineCount: number,\n    callbackID: number\n  ) {\n    const wordWrapped = OVRUI.wrapLines(\n      this._guiSys.font,\n      text,\n      fontSize,\n      width,\n      undefined,\n      maxLineCount\n    );\n    const dim = OVRUI.measureText(this._guiSys.font, wordWrapped, fontSize);\n    this._rnctx.invokeCallback(callbackID, [dim.maxHeight]);\n  }\n\n  /**\n   * Attach or remove a bounding box mesh. This is used by React Devtools to\n   * show the currently-highlighted component.\n   */\n  setBoundingBoxVisible(tag: number, visible: boolean) {\n    const view = this._views[String(tag)];\n    const uiView = view.view;\n    if (!uiView) {\n      return;\n    }\n    let previous = null;\n    uiView.children.forEach(c => {\n      if (c.__REACT_VR_BOUNDING) {\n        previous = c;\n      }\n    });\n    if (visible) {\n      if (previous) {\n        return;\n      }\n      const bounds = new THREE.Box3();\n      bounds.setFromObject(uiView);\n      const boundViz = new THREE.Mesh(\n        new THREE.BoxGeometry(\n          bounds.max.x - bounds.min.x,\n          bounds.max.y - bounds.min.y,\n          bounds.max.z - bounds.min.z,\n          1,\n          1,\n          1\n        ),\n        new THREE.MeshBasicMaterial({wireframe: true, color: 0xe44dd9})\n      );\n      (boundViz: any).__REACT_VR_BOUNDING = true;\n      uiView.add(boundViz);\n    } else {\n      if (!previous) {\n        return;\n      }\n      uiView.remove(previous);\n    }\n  }\n\n  /**\n   * Determines the location on screen, width, and height of the given view and returns the values\n   * via an async callback.\n   */\n  measure(reactTag: number, callback: number) {\n    let view = this._views[String(reactTag)];\n    if (!view) {\n      this._rnctx.invokeCallback(callback, []);\n      return;\n    }\n    let x = 0;\n    let y = 0;\n    const w = view.YGNode.getComputedWidth();\n    const h = view.YGNode.getComputedHeight();\n    while (view) {\n      x +=\n        view.YGNode.getComputedLeft() - view.YGNode.getComputedWidth() * view.style.layoutOrigin[0];\n      y +=\n        view.YGNode.getComputedTop() - view.YGNode.getComputedHeight() * view.style.layoutOrigin[1];\n      view = view.getParent();\n    }\n    // [x, y, w, h, left, top]\n    this._rnctx.invokeCallback(callback, [0, 0, w, h, x, y]);\n  }\n\n  /**\n   * Determines the location on screen, width, and height of the given view relative to the device\n   * screen and returns the values via an async callback.  This is the absolute position including\n   * things like the status bar\n   */\n  measureInWindow(reactTag: number, callback: number) {\n    let view = this._views[String(reactTag)];\n    if (!view) {\n      this._rnctx.invokeCallback(callback, []);\n      return;\n    }\n    let x = 0;\n    let y = 0;\n    const w = view.YGNode.getComputedWidth();\n    const h = view.YGNode.getComputedHeight();\n    while (view) {\n      x +=\n        view.YGNode.getComputedLeft() - view.YGNode.getComputedWidth() * view.style.layoutOrigin[0];\n      y +=\n        view.YGNode.getComputedTop() - view.YGNode.getComputedHeight() * view.style.layoutOrigin[1];\n      view = view.getParent();\n    }\n    this._rnctx.invokeCallback(callback, [x, y, w, h]);\n  }\n\n  /**\n   * Measures the view specified by tag relative to the given ancestorTag. This means that the\n   * returned x, y are relative to the origin x, y of the ancestor view. Results are stored in the\n   * given outputBuffer. We allow ancestor view and measured view to be the same, in which case\n   * the position always will be (0, 0) and method will only measure the view dimensions.\n   *\n   * NB: Unlike {@link #measure}, this will measure relative to the view layout, not the visible\n   * window which can cause unexpected results when measuring relative to things like ScrollViews\n   * that can have offset content on the screen.\n   */\n  measureLayout(\n    reactTag: number,\n    ancestorTag: number,\n    errorCallback: number,\n    successCallback: number\n  ) {\n    let view = this._views[String(reactTag)];\n    if (!view) {\n      this._rnctx.invokeCallback(errorCallback, []);\n      return;\n    }\n    let x = 0;\n    let y = 0;\n    const w = view.YGNode.getComputedWidth();\n    const h = view.YGNode.getComputedHeight();\n    while (view && view.tag !== ancestorTag) {\n      x +=\n        view.YGNode.getComputedLeft() - view.YGNode.getComputedWidth() * view.style.layoutOrigin[0];\n      y +=\n        view.YGNode.getComputedTop() - view.YGNode.getComputedHeight() * view.style.layoutOrigin[1];\n      view = view.getParent();\n    }\n    this._rnctx.invokeCallback(successCallback, [x, y, w, h]);\n  }\n\n  /**\n   * Like {@link #measure} and {@link #measureLayout} but measures relative to the immediate parent.\n   *\n   * NB: Unlike {@link #measure}, this will measure relative to the view layout, not the visible\n   * window which can cause unexpected results when measuring relative to things like ScrollViews\n   * that can have offset content on the screen.\n   */\n  measureLayoutRelativeToParent(reactTag: number, errorCallback: number, successCallback: number) {\n    const view = this._views[String(reactTag)];\n    if (!view) {\n      this._rnctx.invokeCallback(successCallback, []);\n      return;\n    }\n    const x =\n      view.YGNode.getComputedLeft() - view.YGNode.getComputedWidth() * view.style.layoutOrigin[0];\n    const y =\n      view.YGNode.getComputedTop() - view.YGNode.getComputedHeight() * view.style.layoutOrigin[1];\n    const w = view.YGNode.getComputedWidth();\n    const h = view.YGNode.getComputedHeight();\n    this._rnctx.invokeCallback(successCallback, [x, y, w, h]);\n  }\n\n  /**\n   * Configure an animation to be used for the native layout changes, and native views\n   * creation. The animation will only apply during the current batch operations.\n   *\n   * callbacks are not supported, this feature will likely be killed.\n   *\n   * @param config the configuration of the animation for view addition/removal/update.\n   * @param success not supported\n   * @param error not supported\n   */\n  configureNextLayoutAnimation(config: any, finished: any, error: any) {\n    this._layoutAnimation = config;\n  }\n\n  /**\n   * Dispatch a command to a specific native view. This can be called from JS side to invoke\n   * function on a native view.\n   *\n   * @param reactTag - react tag id\n   * @param commandId - the command id for the native view to invoke different functions\n   * @param commandArgs - the arguments of the command\n   */\n  dispatchViewManagerCommand(reactTag: number, commandId: number, commandArgs: Array<any>) {\n    const view = this._views[String(reactTag)];\n    if (!view) {\n      console.warn(\n        `UIManager.dispatchViewManagerCommand: dispatching command on a nonexistent view: ${reactTag}`\n      );\n      return;\n    }\n    view.receiveCommand(commandId, commandArgs);\n  }\n\n  //TODO:\n  //findSubviewIn\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseMesh from './BaseMesh';\nimport {BoxBufferGeometry} from 'three';\nimport merge from '../Utils/merge';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nexport default class RCTBox extends RCTBaseMesh {\n  _dimWidth: number;\n  _dimHeight: number;\n  _dimDepth: number;\n  _needsUpdate: boolean;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super(guiSys, rnctx);\n\n    this._dimWidth = 1;\n    this._dimHeight = 1;\n    this._dimDepth = 1;\n    this._needsUpdate = false;\n\n    Object.defineProperty(\n      this.props,\n      'dimWidth',\n      ({\n        set: width => {\n          this._dimWidth = width;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'dimHeight',\n      ({\n        set: height => {\n          this._dimHeight = height;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'dimDepth',\n      ({\n        set: depth => {\n          this._dimDepth = depth;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    (this: any)._generateGeometry = this._generateGeometry.bind(this);\n  }\n\n  frame() {\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n      this._generateGeometry();\n    }\n  }\n\n  _generateGeometry() {\n    const geometry = new BoxBufferGeometry(this._dimWidth, this._dimHeight, this._dimDepth);\n    this._setGeometry(geometry);\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        dimWidth: 'number',\n        dimHeight: 'number',\n        dimDepth: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseView from './BaseView';\n\nimport extractURL from '../Utils/extractURL';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nimport type {GuiSys} from 'ovrui';\nimport type {Geometry, Texture, Material, ShaderMaterial} from 'three';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\ntype ResourceSpecifier = void | null | string | {uri: string, repeat?: Array<number>};\n\nexport default class RCTBaseMesh extends RCTBaseView {\n  _color: ?number;\n  _lit: boolean;\n  _shader: boolean;\n  _wireframe: boolean;\n  _textureURL: null | string;\n  _loadingURL: null | string;\n  _texture: null | Texture;\n  _litMaterial: Material;\n  _unlitMaterial: Material;\n  _shaderMaterial: ShaderMaterial;\n  _shaderUniformsMap: any;\n  mesh: any;\n  _geometry: any;\n  _rnctx: ReactNativeContext;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super();\n\n    this._lit = false;\n    this._shader = false;\n    this._wireframe = false;\n    this._textureURL = null;\n    this._loadingURL = null;\n    this._texture = null; // Cache for THREE Texture\n    this._litMaterial = new THREE.MeshPhongMaterial({color: 0xffffff}); // THREE Material to use when texture or color used, lit === true\n    this._unlitMaterial = new THREE.MeshBasicMaterial({color: 0xffffff}); // THREE Material to use when texture or color used, lit === false\n    this._shaderMaterial = new THREE.ShaderMaterial(); // THREE Material to use when fragment or vertex shader specified in material parameters\n    this._shaderUniformsMap = {\n      texture: {\n        value: null,\n      },\n    };\n    this._rnctx = rnctx;\n\n    this.mesh = null;\n    this.view = new OVRUI.UIView(guiSys);\n\n    Object.defineProperty(\n      this.style,\n      'opacity',\n      ({\n        configurable: true,\n        set: value => {\n          if (value === null) {\n            this._litMaterial.opacity = 1;\n            this._unlitMaterial.opacity = 1;\n            this._litMaterial.transparent = false;\n            this._unlitMaterial.transparent = false;\n          } else {\n            this._litMaterial.opacity = value;\n            this._unlitMaterial.opacity = value;\n            this._litMaterial.transparent = value < 1;\n            this._unlitMaterial.transparent = value < 1;\n          }\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'lit',\n      ({\n        set: this._setLit.bind(this),\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'wireframe',\n      ({\n        set: this._setWireframe.bind(this),\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'materialParameters',\n      ({\n        set: this._setMaterialParameters.bind(this),\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'texture',\n      ({\n        set: this._setTexture.bind(this),\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.style,\n      'color',\n      ({\n        set: this._setColor.bind(this),\n      }: Object)\n    );\n  }\n\n  _setColor(color: ?number) {\n    this._color = color;\n    if (color == null) {\n      this._litMaterial.color.setHex(0xffffff);\n      this._unlitMaterial.color.setHex(0xffffff);\n    } else {\n      this._litMaterial.color.setHex(color);\n      this._unlitMaterial.color.setHex(color);\n    }\n  }\n\n  _setTexture(value: ResourceSpecifier) {\n    if (!value) {\n      if (this._texture) {\n        this._texture = null;\n        if (this._textureURL) {\n          // Release the reference to the original texture\n          this._rnctx.TextureManager.removeReference(this._textureURL);\n          this._textureURL = null;\n        }\n      }\n      // Remove texture from textured materials\n      this._litMaterial.map = null;\n      this._unlitMaterial.map = null;\n      this._shaderUniformsMap.texture.value = null;\n      this._litMaterial.needsUpdate = true;\n      this._unlitMaterial.needsUpdate = true;\n      this._shaderMaterial.needsUpdate = true;\n      return;\n    }\n    const url = extractURL(value);\n    if (!url) {\n      throw new Error('Invalid value for \"texture\" property: ' + JSON.stringify(value));\n    }\n    const repeat = typeof value === 'object' ? value.repeat : null;\n    this._loadingURL = url;\n    const manager = this._rnctx.TextureManager;\n    manager.addReference(url);\n    manager\n      .getTextureForURL(url)\n      .then(\n        texture => {\n          if (url !== this._loadingURL) {\n            // We've started to load another texture since this request began\n            manager.removeReference(url);\n            return;\n          }\n          this._loadingURL = null;\n          if (this._textureURL) {\n            manager.removeReference(this._textureURL);\n          }\n          this._texture = texture;\n          this._texture.needsUpdate = true;\n          this._textureURL = url;\n          if (repeat && Array.isArray(repeat)) {\n            this._texture.wrapS = THREE.RepeatWrapping;\n            this._texture.wrapT = THREE.RepeatWrapping;\n            this._texture.repeat.set(...repeat);\n          }\n          // TODO: Consider providing props on BaseMesh to control these as well\n          this._litMaterial.map = this._texture;\n          this._unlitMaterial.map = this._texture;\n          this._shaderUniformsMap.texture.value = texture;\n          this._litMaterial.needsUpdate = true;\n          this._unlitMaterial.needsUpdate = true;\n          this._shaderMaterial.needsUpdate = true;\n        },\n        err => {\n          manager.removeReference(url);\n          this._loadingURL = null;\n          console.error(err);\n        }\n      )\n      .catch(err => {\n        console.error(err);\n      });\n  }\n\n  _setLit(flag: boolean) {\n    this._lit = flag;\n    const mat = this._shader\n      ? this._shaderMaterial\n      : flag ? this._litMaterial : this._unlitMaterial;\n    if (this.mesh) {\n      this.mesh.material = mat;\n    }\n  }\n\n  _setWireframe(flag: boolean) {\n    this._wireframe = flag;\n    this._litMaterial.wireframe = flag;\n    this._unlitMaterial.wireframe = flag;\n  }\n\n  _setGeometry(geometry: Geometry) {\n    if (!this.mesh) {\n      const mat = this._shader\n        ? this._shaderMaterial\n        : this._lit ? this._litMaterial : this._unlitMaterial;\n      this.mesh = new THREE.Mesh(geometry, mat);\n      this.view.add(this.mesh);\n    } else {\n      this.mesh.geometry = geometry;\n    }\n  }\n\n  _setMaterialParameters(parameters: any) {\n    if (!parameters) {\n      parameters = {\n        fog: true,\n\n        blending: THREE.NormalBlending,\n        side: THREE.FrontSide,\n        shading: THREE.SmoothShading,\n        vertexColors: THREE.NoColors,\n\n        transparent: false,\n\n        blendSrc: THREE.SrcAlphaFactor,\n        blendDst: THREE.OneMinusSrcAlphaFactor,\n        blendEquation: THREE.AddEquation,\n        blendSrcAlpha: null,\n        blendDstAlpha: null,\n        blendEquationAlpha: null,\n\n        depthFunc: THREE.LessEqualDepth,\n        depthTest: true,\n        depthWrite: true,\n\n        clippingPlanes: null,\n        clipShadows: false,\n\n        colorWrite: true,\n      };\n    }\n    if (parameters.vertexShader || parameters.fragmentShader) {\n      // extract the uniforms\n      const uniforms = parameters.uniforms || {};\n      delete parameters.uniforms;\n\n      // set value of uniform is cached so we need to make changes to that\n      const targetUniforms = this._shaderMaterial.uniforms;\n      for (const uniform in targetUniforms) {\n        delete targetUniforms[uniform];\n      }\n      for (const uniform in this._shaderUniformsMap) {\n        targetUniforms[uniform] = this._shaderUniformsMap[uniform];\n      }\n      for (const uniform in uniforms) {\n        targetUniforms[uniform] = uniforms[uniform];\n      }\n\n      // assign the reset via the usual path\n      this._shaderMaterial.setValues(parameters);\n      this._shader = true;\n      if (this.mesh) {\n        this.mesh.material = this._shaderMaterial;\n      }\n    } else {\n      this._litMaterial.setValues(parameters);\n      this._unlitMaterial.setValues(parameters);\n      this._shader = false;\n      if (this.mesh) {\n        this.mesh.material = this._lit ? this._litMaterial : this._unlitMaterial;\n      }\n    }\n  }\n\n  presentLayout() {\n    super.presentLayout();\n    if (this.mesh && this.mesh.geometry) {\n      this.mesh.geometry.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n    }\n  }\n\n  dispose() {\n    if (this._texture) {\n      this._texture = null;\n      if (this._textureURL) {\n        // Release the reference to the original texture\n        this._rnctx.TextureManager.removeReference(this._textureURL);\n        this._textureURL = null;\n      }\n    }\n    this._litMaterial.dispose();\n    this._shaderMaterial.dispose();\n    this._unlitMaterial.dispose();\n    super.dispose();\n    this._geometry = null;\n    this.mesh = null;\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        lit: 'boolean',\n        texture: 'object',\n        wireframe: 'boolean',\n        materialParameters: 'object',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Defines RTCBaseView which maintains an array of children, style, and properties.\n * Provides methods to manage children and do layout, including presentLayout,\n * which essentially assigns position/rotation/frame).\n * @class RCTBaseView\n * @flow\n */\n\nimport isPositive from '../Utils/isPositive';\nimport * as Yoga from '../Utils/Yoga.bundle';\nimport UIManager from '../Modules/UIManager';\n\nimport type {UIView, GuiSys} from 'ovrui';\n\nconst INTERACTION_CALLBACKS = [\n  'onEnter',\n  'onExit',\n  'onInput',\n  'onChange',\n  'onHeadPose',\n  'onChangeCaptured',\n  'onInputCaptured',\n  'onHeadPoseCaptured',\n  'onMove',\n];\n// For now the sets are the same, but any future events that are mouse-only can\n// be added to this set.\nconst IS_MOUSE_INTERACTION_CALLBACKS = {\n  onEnter: true,\n  onExit: true,\n  onInput: true,\n  onChange: true,\n  onHeadPose: true,\n  onChangeCaptured: true,\n  onInputCaptured: true,\n  onHeadPoseCaptured: true,\n  onMove: true,\n};\n\nconst MAP_CSS_WRAP = {\n  nowrap: Yoga.WRAP_NO_WRAP,\n  wrap: Yoga.WRAP_WRAP,\n};\n\nconst MAP_CSS_FLEX_DIRECTION = {\n  column: Yoga.FLEX_DIRECTION_COLUMN,\n  'column-reverse': Yoga.FLEX_DIRECTION_COLUMN_REVERSE,\n  row: Yoga.FLEX_DIRECTION_ROW,\n  'row-reverse': Yoga.FLEX_DIRECTION_ROW_REVERSE,\n};\n\nconst MAP_CSS_JUSTIFY = {\n  'flex-start': Yoga.JUSTIFY_FLEX_START,\n  center: Yoga.JUSTIFY_CENTER,\n  'flex-end': Yoga.JUSTIFY_FLEX_END,\n  'space-between': Yoga.JUSTIFY_SPACE_BETWEEN,\n  'space-around': Yoga.JUSTIFY_SPACE_AROUND,\n};\n\nconst MAP_CSS_ALIGN = {\n  auto: Yoga.ALIGN_AUTO,\n  'flex-start': Yoga.ALIGN_FLEX_START,\n  center: Yoga.ALIGN_CENTER,\n  'flex-end': Yoga.ALIGN_FLEX_END,\n  stretch: Yoga.ALIGN_STRETCH,\n  baseline: Yoga.ALIGN_BASELINE,\n};\n\nconst MAP_CSS_POSITION = {\n  relative: Yoga.POSITION_TYPE_RELATIVE,\n  absolute: Yoga.POSITION_TYPE_ABSOLUTE,\n};\n\nconst MAP_CSS_OVERFLOW = {\n  visible: Yoga.OVERFLOW_VISIBLE,\n  hidden: Yoga.OVERFLOW_HIDDEN,\n  scroll: Yoga.OVERFLOW_SCROLL,\n};\n\nconst MAP_CSS_DISPLAY = {\n  flex: Yoga.DISPLAY_FLEX,\n  none: Yoga.DISPLAY_NONE,\n};\n\n// Use negative command id so the command id will\n// not overlap with Subclasses's command id\nconst COMMAND_SET_IMMEDIATE_ON_TOUCH_END = -1;\n\nfunction _isPercent(value) {\n  if (typeof value === 'string') {\n    return true;\n  }\n  return undefined;\n}\n\nexport default class RCTBaseView {\n  _borderRadius: any;\n  _borderTopLeftRadius: any;\n  _borderTopRightRadius: any;\n  _borderBottomLeftRadius: any;\n  _borderBottomRightRadius: any;\n  _borderRadiusDirty: boolean;\n  props: any;\n  style: any;\n  tag: number;\n  rootTag: number;\n  interactableCount: number;\n  mouseInteractableCount: number;\n  YGNode: any;\n  UIManager: UIManager;\n  parent: ?RCTBaseView;\n  children: Array<RCTBaseView>;\n  view: UIView;\n  isDirty: boolean;\n  _transformDirty: boolean;\n  receivesMoveEvent: boolean;\n  /**\n   * constructor: sets defaults for all views\n   */\n  constructor(guisys: GuiSys) {\n    this._borderRadius = null;\n    this._borderTopLeftRadius = null;\n    this._borderTopRightRadius = null;\n    this._borderBottomLeftRadius = null;\n    this._borderBottomRightRadius = null;\n    this._borderRadiusDirty = false;\n    this._transformDirty = true;\n    this.YGNode = Yoga.Node.create();\n    /* $FlowFixMe */\n    this.UIManager = null;\n    this.tag = 0;\n    this.rootTag = 0;\n    this.children = [];\n    this.parent = null;\n    this.props = {};\n    this.style = {\n      layoutOrigin: [0, 0],\n    };\n    this.interactableCount = 0;\n    this.mouseInteractableCount = 0;\n    this.isDirty = true;\n    this.receivesMoveEvent = false;\n    // renderGroup style property mapping to three.js view\n    // as style is declared in the base class with properties,\n    // defining of setters must be accomplished with Object.defineProperty\n    Object.defineProperty(\n      (this.style: any),\n      'backgroundColor',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0;\n          }\n          this.view.setBackgroundColor(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'opacity',\n      ({\n        configurable: true,\n        set: value => {\n          if (value == null) {\n            value = 1.0;\n          }\n          this.view.setOpacity(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderColor',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0xff000000;\n          }\n          this.view.setBorderColor(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderRadius',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0.0;\n          }\n          this._borderRadius = value;\n          this._borderRadiusDirty = true;\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderTopLeftRadius',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0.0;\n          }\n          this._borderTopLeftRadius = value;\n          this._borderRadiusDirty = true;\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderTopRightRadius',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0.0;\n          }\n          this._borderTopRightRadius = value;\n          this._borderRadiusDirty = true;\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderBottomLeftRadius',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0.0;\n          }\n          this._borderBottomLeftRadius = value;\n          this._borderRadiusDirty = true;\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'borderBottomRightRadius',\n      ({\n        set: value => {\n          if (value == null) {\n            value = 0.0;\n          }\n          this._borderBottomRightRadius = value;\n          this._borderRadiusDirty = true;\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      (this.style: any),\n      'renderGroup',\n      ({\n        set: value => {\n          if (value == null) {\n            value = false;\n          }\n          this.view && (this.view.renderGroup = value);\n        },\n      }: Object)\n    );\n    INTERACTION_CALLBACKS.forEach(element => {\n      Object.defineProperty(\n        this.props,\n        element.toString(),\n        ({\n          set: value => {\n            if (this.props['_' + element] !== value) {\n              this.interactableCount += value ? 1 : -1;\n              if (IS_MOUSE_INTERACTION_CALLBACKS[element]) {\n                this.mouseInteractableCount += value ? 1 : -1;\n                this.view && this.view.setIsMouseInteractable(this.mouseInteractableCount > 0);\n              }\n              if (element === 'onMove') {\n                this.receivesMoveEvent = !!value;\n              }\n              this.view && this.view.setIsInteractable(this.interactableCount > 0);\n              this.view && this.view.forceRaycastTest(this.interactableCount > 0);\n              this.props['_' + element] = value;\n            }\n          },\n        }: Object)\n      );\n    });\n    this.view = null;\n  }\n\n  /**\n   * Returns react tag that this view is associated with\n   */\n  getTag(): number {\n    return this.tag;\n  }\n\n  /**\n   * Returns the index of child\n   * @param child - child to find return -1 for not present\n   */\n  getIndexOf(child: RCTBaseView): number {\n    return this.children.indexOf(child);\n  }\n\n  /**\n   * Returns the parent view\n   */\n  getParent(): ?RCTBaseView {\n    return this.parent;\n  }\n\n  /**\n   * Add a child view at a specific index\n   * @param index - index to add at\n   * @param child - view to add\n   */\n  addChild(index: number, child: RCTBaseView) {\n    this.children.splice(index, 0, child);\n    this.YGNode.insertChild(child.YGNode, index);\n    this.view.add(child.view);\n  }\n\n  /**\n   * Sets the parent view\n   * @param parent - view to set\n   */\n  setParent(parent: ?RCTBaseView) {\n    this.parent = parent;\n  }\n\n  /**\n   * Remove a child a specific index\n   * @param index - index within child to remove, will also child view\n   *                from three.js scene\n   */\n  removeChild(index: number) {\n    this.view.remove(this.children[index].view);\n    this.YGNode.removeChild(this.YGNode.getChild(index));\n    this.children.splice(index, 1);\n  }\n\n  /**\n   * Returns the child at index\n   * @param index - index within children Array to return\n   */\n  getChild(index: number) {\n    return this.children[index];\n  }\n\n  /**\n   * Returns the number of children attached to this view\n   */\n  getChildCount(): number {\n    return this.children.length;\n  }\n\n  /**\n   * Mark this view as dirty as well as parents, this will cause this view\n   * to be relayed out\n   */\n  makeDirty(): void {\n    let view = this;\n    while (view) {\n      view.isDirty = true;\n      view = view.getParent();\n    }\n  }\n\n  /**\n   * Subclasses may use this method to receive events/commands directly from JS through the\n   * {@link UIManager}.\n   *\n   * @param commandId code of the command\n   * @param commandArgs optional arguments for the command\n   */\n  receiveCommand(commandId: number, commandArgs: any) {\n    switch (commandId) {\n      case COMMAND_SET_IMMEDIATE_ON_TOUCH_END:\n        const cancel = commandArgs.length < 4;\n        if (cancel) {\n          this.view && this.view.setImmediateListener(null);\n        } else {\n          const immediateEventType = commandArgs[0];\n          const immediateTag = commandArgs[1];\n          const immediateCommandId = commandArgs[2];\n          const immediateCommandArgs = commandArgs[3];\n          this.view &&\n            this.view.setImmediateListener({\n              eventType: immediateEventType,\n              callback: () =>\n                this.UIManager.dispatchViewManagerCommand(\n                  immediateTag,\n                  immediateCommandId,\n                  immediateCommandArgs\n                ),\n            });\n        }\n        break;\n    }\n  }\n\n  /**\n   * dispose of any associated resource\n   */\n  dispose(): void {\n    RCTBaseView.disposeThreeJSObject(this.view);\n    Yoga.Node.destroy(this.YGNode);\n    this.view = null;\n  }\n\n  /**\n   * Per Frame update for view\n   */\n  frame(timeStamp: number, deltaTime: number): void {\n    // TODO query why this isn't a setter\n    if (this.style.opacity !== undefined) {\n      this.view.setOpacity(this.style.opacity);\n    }\n  }\n\n  /*\n   * The following functions map react attributes of the\n   * same name minus _ to the values in Yoga\n   */\n\n  _left(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPositionPercent(Yoga.EDGE_LEFT, parseFloat(value));\n    } else {\n      this.YGNode.setPosition(Yoga.EDGE_LEFT, value);\n    }\n  }\n\n  _top(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPositionPercent(Yoga.EDGE_TOP, parseFloat(value));\n    } else {\n      this.YGNode.setPosition(Yoga.EDGE_TOP, value);\n    }\n  }\n\n  _right(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPositionPercent(Yoga.EDGE_RIGHT, parseFloat(value));\n    } else {\n      this.YGNode.setPosition(Yoga.EDGE_RIGHT, value);\n    }\n  }\n\n  _bottom(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPositionPercent(Yoga.EDGE_BOTTOM, parseFloat(value));\n    } else {\n      this.YGNode.setPosition(Yoga.EDGE_BOTTOM, value);\n    }\n  }\n\n  _margin(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_ALL, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_ALL, value);\n    }\n  }\n\n  _marginVertical(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_VERTICAL, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_VERTICAL, value);\n    }\n  }\n\n  _marginHorizontal(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_HORIZONTAL, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_HORIZONTAL, value);\n    }\n  }\n\n  _marginTop(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_TOP, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_TOP, value);\n    }\n  }\n\n  _marginBottom(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_BOTTOM, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_BOTTOM, value);\n    }\n  }\n\n  _marginLeft(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_LEFT, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_LEFT, value);\n    }\n  }\n\n  _marginRight(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMarginPercent(Yoga.EDGE_RIGHT, parseFloat(value));\n    } else {\n      this.YGNode.setMargin(Yoga.EDGE_RIGHT, value);\n    }\n  }\n\n  _padding(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_ALL, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_ALL, value);\n    }\n  }\n\n  _paddingVertical(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_VERTICAL, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_VERTICAL, value);\n    }\n  }\n\n  _paddingHorizontal(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_HORIZONTAL, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_HORIZONTAL, value);\n    }\n  }\n\n  _paddingTop(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_TOP, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_TOP, value);\n    }\n  }\n\n  _paddingBottom(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_BOTTOM, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_BOTTOM, value);\n    }\n  }\n\n  _paddingLeft(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_LEFT, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_LEFT, value);\n    }\n  }\n\n  _paddingRight(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setPaddingPercent(Yoga.EDGE_RIGHT, parseFloat(value));\n    } else {\n      this.YGNode.setPadding(Yoga.EDGE_RIGHT, value);\n    }\n  }\n\n  _borderWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setBorder(Yoga.EDGE_ALL, value);\n  }\n\n  _borderTopWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setBorder(Yoga.EDGE_TOP, value);\n  }\n\n  _borderRightWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setBorder(Yoga.EDGE_RIGHT, value);\n  }\n\n  _borderBottomWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setBorder(Yoga.EDGE_BOTTOM, value);\n  }\n\n  _borderLeftWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setBorder(Yoga.EDGE_LEFT, value);\n  }\n\n  _position(value: any): void {\n    this.YGNode.setPositionType(value !== null ? MAP_CSS_POSITION[value] : 0);\n  }\n\n  _alignContent(value: any): void {\n    this.YGNode.setAlignContent(value !== null ? MAP_CSS_ALIGN[value] : 0);\n  }\n\n  _alignItems(value: any): void {\n    this.YGNode.setAlignItems(value !== null ? MAP_CSS_ALIGN[value] : 0);\n  }\n\n  _alignSelf(value: any): void {\n    this.YGNode.setAlignSelf(value !== null ? MAP_CSS_ALIGN[value] : 0);\n  }\n\n  _flexDirection(value: any): void {\n    this.YGNode.setFlexDirection(value !== null ? MAP_CSS_FLEX_DIRECTION[value] : Yoga.UNDEFINED);\n  }\n\n  _flexWrap(value: any): void {\n    this.YGNode.setFlexWrap(value !== null ? MAP_CSS_WRAP[value] : Yoga.UNDEFINED);\n  }\n\n  _justifyContent(value: any): void {\n    this.YGNode.setJustifyContent(value !== null ? MAP_CSS_JUSTIFY[value] : 0);\n  }\n\n  _overflow(value: any): void {\n    this.view.clippingEnabled = value === Yoga.OVERFLOW_HIDDEN;\n    this.YGNode.setOverflow(value !== null ? MAP_CSS_OVERFLOW[value] : 0);\n  }\n\n  _display(value: any): void {\n    this.YGNode.setDisplay(value !== null ? MAP_CSS_DISPLAY[value] : 0);\n  }\n\n  _flex(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setFlex(value);\n  }\n\n  _flexBasis(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setFlexBasisPercent(parseFloat(value));\n    } else {\n      this.YGNode.setFlexBasis(value);\n    }\n  }\n\n  _flexGrow(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setFlexGrow(value);\n  }\n\n  _flexShrink(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setFlexShrink(value);\n  }\n\n  _width(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setWidthPercent(parseFloat(value));\n    } else {\n      this.YGNode.setWidth(value);\n    }\n  }\n\n  _height(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setHeightPercent(parseFloat(value));\n    } else {\n      this.YGNode.setHeight(value);\n    }\n  }\n\n  _minWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMinWidthPercent(parseFloat(value));\n    } else {\n      this.YGNode.setMinWidth(value);\n    }\n  }\n\n  _minHeight(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMinHeightPercent(parseFloat(value));\n    } else {\n      this.YGNode.setMinHeight(value);\n    }\n  }\n\n  _maxWidth(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMaxWidthPercent(parseFloat(value));\n    } else {\n      this.YGNode.setMaxWidth(value);\n    }\n  }\n\n  _maxHeight(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    if (_isPercent(value)) {\n      this.YGNode.setMaxHeightPercent(parseFloat(value));\n    } else {\n      this.YGNode.setMaxHeight(value);\n    }\n  }\n\n  _aspectRatio(value: any): void {\n    if (value === null) {\n      value = Yoga.UNDEFINED;\n    }\n    this.YGNode.setAspectRatio(value);\n  }\n\n  _getBorderValue(edge: any): number {\n    const value = this.YGNode.getBorder(edge);\n    const allValue = this.YGNode.getBorder(Yoga.EDGE_ALL);\n    return Number.isNaN(value) ? (Number.isNaN(allValue) ? 0 : allValue) : value;\n  }\n\n  _transform(value: any): void {\n    if (value === null) {\n      this.style.transform = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n    } else {\n      this.style.transform = value;\n    }\n    this._transformDirty = true;\n  }\n  /*\n   * The previous functions map react attributes of the\n   * same name minus _ to the values in Yoga\n   */\n\n  /**\n   * Given a layout object, calculate the associate transforms for three.js\n   */\n  presentLayout(): void {\n    if (this.YGNode.getHasNewLayout()) {\n      this.YGNode.setHasNewLayout(false);\n\n      const left = this.YGNode.getComputedLeft();\n      const top = this.YGNode.getComputedTop();\n      const width = this.YGNode.getComputedWidth();\n      const height = this.YGNode.getComputedHeight();\n      const x = -this.style.layoutOrigin[0] * width;\n      const y = -this.style.layoutOrigin[1] * height;\n\n      if (this.props.onLayout) {\n        // send an event to the interested view which details\n        // the layout location in the frame of the parent view\n        // takes into account he layoutOrigin\n        this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n          this.getTag(),\n          'topLayout',\n          {\n            x: x + left,\n            y: y + top,\n            width: width,\n            height: height,\n          },\n        ]);\n      }\n      this.view.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n      this.view.setBorderWidth([\n        this._getBorderValue(Yoga.EDGE_LEFT),\n        this._getBorderValue(Yoga.EDGE_TOP),\n        this._getBorderValue(Yoga.EDGE_RIGHT),\n        this._getBorderValue(Yoga.EDGE_BOTTOM),\n      ]);\n      this.view.setFrame &&\n        this.view.setFrame(x + left, -(y + top), width, height, this.UIManager._layoutAnimation);\n    }\n    // it transform is set apply to UIView\n    if (this.style.transform) {\n      if (this._transformDirty) {\n        if (this.view.setLocalTransform) {\n          this.view.setLocalTransform(this.style.transform);\n          this._transformDirty = false;\n        }\n      }\n    }\n\n    this.view.owner = this;\n    if (this._borderRadiusDirty) {\n      const borderRadius = isPositive(this._borderRadius) ? this._borderRadius : 0;\n      this.view.setBorderRadius([\n        isPositive(this._borderTopRightRadius) ? this._borderTopRightRadius : borderRadius,\n        isPositive(this._borderTopLeftRadius) ? this._borderTopLeftRadius : borderRadius,\n        isPositive(this._borderBottomLeftRadius) ? this._borderBottomLeftRadius : borderRadius,\n        isPositive(this._borderBottomRightRadius) ? this._borderBottomRightRadius : borderRadius,\n      ]);\n      this._borderRadiusDirty = false;\n    }\n  }\n\n  /**\n   * Helper to dispose of the internal memory allocations for three js object\n   */\n  static disposeThreeJSObject(node: any): void {\n    if (!node) {\n      return;\n    }\n    if (node.geometry) {\n      node.geometry.dispose();\n      node.geometry = null;\n    }\n\n    if (node.material) {\n      if (Array.isArray(node.material)) {\n        for (let i = 0; i < node.material.length; i++) {\n          const mtr = node.material[i];\n          if (mtr.map) {\n            mtr.map.dispose();\n            mtr.map = null;\n          }\n          mtr.dispose();\n        }\n        node.material = null;\n      } else {\n        if (node.material.map) {\n          node.material.map.dispose();\n          node.material.map = null;\n        }\n        node.material.dispose();\n      }\n    }\n    for (const i in node.children) {\n      // Do not dispose of child UIViews, they need to handle their own disposal...\n      const child = node.children[i];\n      if (child.type !== 'UIView') {\n        RCTBaseView.disposeThreeJSObject(node.children[i]);\n      }\n    }\n    node.parent = null;\n    node.children = [];\n  }\n\n  /**\n   * Describe the props that are available for React to change\n   */\n  static describe(): any {\n    return {\n      NativeProps: {\n        onLayout: 'function',\n        onEnter: 'function',\n        onExit: 'function',\n        onInput: 'function',\n        onChange: 'function',\n        onHeadPose: 'function',\n        onChangeCaptured: 'function',\n        onInputCaptured: 'function',\n        onHeadPoseCaptured: 'function',\n        onMove: 'function',\n      },\n      Commands: {\n        setImmediateOnTouchEnd: COMMAND_SET_IMMEDIATE_ON_TOUCH_END,\n      },\n    };\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport default function isPositive(value) {\n  return typeof value === 'number' && value >= 0;\n}\n","/*!\n * BSD License\n * \n * For yoga software\n * \n * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n *  * Redistributions of source code must retain the above copyright notice, this\n *    list of conditions and the following disclaimer.\n * \n *  * Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * \n *  * Neither the name Facebook nor the names of its contributors may be used to\n *    endorse or promote products derived from this software without specific\n *    prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Yoga\"] = factory();\n\telse\n\t\troot[\"Yoga\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, Buffer) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;((function(root,wrapper){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return wrapper}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else if(typeof module==\"object\"&&module.exports)module.exports=wrapper;else(root.nbind=root.nbind||{}).init=wrapper}))(this,(function(Module,cb){if(typeof Module==\"function\"){cb=Module;Module={}}Module.onRuntimeInitialized=(function(init,cb){return(function(){if(init)init.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(err){cb(err);return}cb(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})})})(Module.onRuntimeInitialized,cb);var Module;if(!Module)Module=(typeof Module!==\"undefined\"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&\"function\"===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module[\"print\"])Module[\"print\"]=console.log;if(!Module[\"printErr\"])Module[\"printErr\"]=console.warn;var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=__webpack_require__(7);if(!nodePath)nodePath=__webpack_require__(8);filename=nodePath[\"normalize\"](filename);var ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module[\"load\"]=function load(f){globalEval(read(f))};if(!Module[\"thisProgram\"]){if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}else{Module[\"thisProgram\"]=\"unknown-program\"}}Module[\"arguments\"]=process[\"argv\"].slice(2);if(true){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(!Module[\"print\"])Module[\"print\"]=print;if(typeof printErr!=\"undefined\")Module[\"printErr\"]=printErr;if(typeof read!=\"undefined\"){Module[\"read\"]=read}else{Module[\"read\"]=function shell_read(){throw\"no read() available\"}}Module[\"readBinary\"]=function readBinary(f){if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}var data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof console!==\"undefined\"){if(!Module[\"print\"])Module[\"print\"]=function shell_print(x){console.log(x)};if(!Module[\"printErr\"])Module[\"printErr\"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module[\"print\"])Module[\"print\"]=TRY_USE_DUMP&&typeof dump!==\"undefined\"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module[\"load\"]=importScripts}if(typeof Module[\"setWindowTitle\"]===\"undefined\"){Module[\"setWindowTitle\"]=(function(title){document.title=title})}}else{throw\"Unknown runtime environment. Where are we?\"}function globalEval(x){eval.call(null,x)}if(!Module[\"load\"]&&Module[\"read\"]){Module[\"load\"]=function load(f){globalEval(Module[\"read\"](f))}}if(!Module[\"print\"]){Module[\"print\"]=(function(){})}if(!Module[\"printErr\"]){Module[\"printErr\"]=Module[\"print\"]}if(!Module[\"arguments\"]){Module[\"arguments\"]=[]}if(!Module[\"thisProgram\"]){Module[\"thisProgram\"]=\"./this.program\"}if(!Module[\"quit\"]){Module[\"quit\"]=(function(status,toThrow){throw toThrow})}Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];Module[\"preRun\"]=[];Module[\"postRun\"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return Runtime.QUANTUM_SIZE}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type===\"double\"||type===\"i64\"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type==\"i64\"||type==\"double\"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){if(sig.length===1){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func)}}else if(sig.length===2){sigCache[func]=function dynCall_wrapper(arg){return Runtime.dynCall(sig,func,[arg])}}else{sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,Array.prototype.slice.call(arguments))}}}return sigCache[func]}),getCompilerSetting:(function(name){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module[\"Runtime\"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func){try{func=eval(\"_\"+ident)}catch(e){}}assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\");return func}var cwrap,ccall;((function(){var JSfuncs={\"stackSave\":(function(){Runtime.stackSave()}),\"stackRestore\":(function(){Runtime.stackRestore()}),\"arrayToC\":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType===\"string\")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type===\"number\"}));var numericRet=returnType!==\"string\";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return\"$\"+i}));var funcstr=\"(function(\"+argNames.join(\",\")+\") {\";var nargs=argTypes.length;if(!numericArgs){ensureJSsource();funcstr+=\"var stack = \"+JSsource[\"stackSave\"].body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type===\"number\")continue;var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\";funcstr+=convertCode.body+\";\";funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}if(!numericArgs){ensureJSsource();funcstr+=JSsource[\"stackRestore\"].body.replace(\"()\",\"(stack)\")+\";\"}funcstr+=\"return ret})\";return eval(funcstr)}}))();Module[\"ccall\"]=ccall;Module[\"cwrap\"]=cwrap;function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}Module[\"setValue\"]=setValue;function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for setValue: \"+type)}return null}Module[\"getValue\"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module[\"ALLOC_NORMAL\"]=ALLOC_NORMAL;Module[\"ALLOC_STACK\"]=ALLOC_STACK;Module[\"ALLOC_STATIC\"]=ALLOC_STATIC;Module[\"ALLOC_DYNAMIC\"]=ALLOC_DYNAMIC;Module[\"ALLOC_NONE\"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr===\"function\"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module[\"allocate\"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module[\"getMemory\"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module[\"UTF8ToString\"](ptr)}Module[\"Pointer_stringify\"]=Pointer_stringify;function AsciiToString(ptr){var str=\"\";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module[\"AsciiToString\"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module[\"stringToAscii\"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module[\"UTF8ArrayToString\"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module[\"UTF8ToString\"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module[\"stringToUTF8Array\"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module[\"stringToUTF8\"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function demangle(func){var __cxa_demangle_func=Module[\"___cxa_demangle\"]||Module[\"__cxa_demangle\"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,\"i32\")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}Module[\"stackTrace\"]=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||134217728;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module[\"HEAP\"]=HEAP;Module[\"buffer\"]=buffer;Module[\"HEAP8\"]=HEAP8;Module[\"HEAP16\"]=HEAP16;Module[\"HEAP32\"]=HEAP32;Module[\"HEAPU8\"]=HEAPU8;Module[\"HEAPU16\"]=HEAPU16;Module[\"HEAPU32\"]=HEAPU32;Module[\"HEAPF32\"]=HEAPF32;Module[\"HEAPF64\"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module[\"addOnPreRun\"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module[\"addOnInit\"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module[\"addOnPreMain\"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module[\"addOnExit\"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module[\"addOnPostRun\"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module[\"intArrayFromString\"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}Module[\"intArrayToString\"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module[\"writeStringToMemory\"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module[\"writeArrayToMemory\"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module[\"writeAsciiToMemory\"]=writeAsciiToMemory;if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"fround\"]){var froundBuffer=new Float32Array(1);Math[\"fround\"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math[\"fround\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}Module[\"addRunDependency\"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"removeRunDependency\"]=removeRunDependency;Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var ASM_CONSTS=[(function($0,$1,$2,$3,$4,$5,$6,$7){{return _nbind.callbackSignatureList[$0].apply(this,arguments)}})];function _emscripten_asm_const_iiiiiiii(code,a0,a1,a2,a3,a4,a5,a6){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6)}function _emscripten_asm_const_iiiii(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiidddddd(code,a0,a1,a2,a3,a4,a5,a6,a7){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5,a6,a7)}function _emscripten_asm_const_iiididi(code,a0,a1,a2,a3,a4,a5){return ASM_CONSTS[code](a0,a1,a2,a3,a4,a5)}function _emscripten_asm_const_iiii(code,a0,a1,a2){return ASM_CONSTS[code](a0,a1,a2)}function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS[code](a0,a1,a2,a3)}function _emscripten_asm_const_iiiiii(code,a0,a1,a2,a3,a4){return ASM_CONSTS[code](a0,a1,a2,a3,a4)}STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+12832;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_nbind_cc()})},{func:(function(){__GLOBAL__sub_I_common_cc()})},{func:(function(){__GLOBAL__sub_I_Binding_cc()})});allocate([1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,232,3,0,0,232,3,0,0,0,0,192,127,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,192,127,3,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,200,18,0,0,210,18,0,0,218,18,0,0,162,18,0,0,176,18,0,0,188,18,0,0,223,45,0,0,224,45,0,0,225,45,0,0,224,45,0,0,225,45,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,226,45,0,0,224,45,0,0,224,45,0,0,224,45,0,0,224,45,0,0,224,45,0,0,224,45,0,0,227,45,0,0,228,45,0,0,224,45,0,0,224,45,0,0,225,45,0,0,229,45,0,0,228,45,0,0,229,45,0,0,228,45,0,0,192,4,0,0,3,0,0,0,230,45,0,0,208,4,0,0,231,45,0,0,2,0,0,0,232,45,0,0,208,4,0,0,231,45,0,0,228,45,0,0,208,4,0,0,228,45,0,0,208,4,0,0,231,45,0,0,224,45,0,0,225,45,0,0,224,45,0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,226,45,0,0,225,45,0,0,224,45,0,0,233,45,0,0,233,45,0,0,225,45,0,0,225,45,0,0,228,45,0,0,224,45,0,0,228,45,0,0,225,45,0,0,224,45,0,0,228,45,0,0,225,45,0,0,228,45,0,0,92,5,0,0,3,0,0,0,100,5,0,0,1,0,0,0,232,45,0,0,228,45,0,0,124,5,0,0,225,45,0,0,224,45,0,0,2,0,0,0,233,45,0,0,124,5,0,0,204,23,0,0,144,5,0,0,2,0,0,0,227,45,0,0,0,0,0,0,0,0,0,0,2,0,0,0,9,0,0,0,10,0,0,0,2,0,0,0,11,0,0,0,192,5,0,0,224,45,0,0,224,45,0,0,2,0,0,0,223,45,0,0,192,5,0,0,229,45,0,0,225,45,0,0,228,45,0,0,225,45,0,0,229,45,0,0,2,0,0,0,238,45,0,0,244,5,0,0,48,24,0,0,241,45,0,0,254,45,0,0,255,45,0,0,0,46,0,0,1,46,0,0,2,46,0,0,231,45,0,0,225,45,0,0,3,46,0,0,4,46,0,0,5,46,0,0,6,46,0,0,7,46,0,0,224,45,0,0,0,0,0,0,228,45,0,0,61,24,0,0,229,45,0,0,66,24,0,0,9,46,0,0,71,24,0,0,192,4,0,0,83,24,0,0,104,6,0,0,96,24,0,0,10,46,0,0,115,24,0,0,11,46,0,0,124,24,0,0,0,0,0,0,3,0,0,0,112,6,0,0,1,0,0,0,230,45,0,0,0,0,0,0,0,0,0,0,2,0,0,0,12,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,228,45,0,0,12,46,0,0,172,6,0,0,231,45,0,0,180,6,0,0,188,6,0,0,2,0,0,0,196,6,0,0,7,0,0,0,12,46,0,0,7,0,0,0,172,6,0,0,1,0,0,0,0,46,0,0,228,45,0,0,12,46,0,0,180,6,0,0,228,45,0,0,12,46,0,0,172,6,0,0,228,45,0,0,12,46,0,0,254,45,0,0,254,45,0,0,10,46,0,0,254,45,0,0,12,46,0,0,10,46,0,0,254,45,0,0,12,46,0,0,180,6,0,0,10,46,0,0,254,45,0,0,12,46,0,0,231,45,0,0,10,46,0,0,254,45,0,0,48,7,0,0,231,45,0,0,2,0,0,0,12,46,0,0,228,45,0,0,231,45,0,0,231,45,0,0,231,45,0,0,231,45,0,0,10,46,0,0,12,46,0,0,192,4,0,0,228,45,0,0,192,4,0,0,192,4,0,0,192,4,0,0,192,4,0,0,192,4,0,0,228,45,0,0,172,6,0,0,192,4,0,0,0,0,0,0,0,0,0,0,2,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,17,0,0,0,156,7,0,0,2,0,0,0,13,46,0,0,226,45,0,0,231,45,0,0,176,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,22,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,30,46,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,108,105,115,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,105,116,101,109,115,0,67,111,117,108,100,32,110,111,116,32,101,120,116,101,110,100,32,97,108,108,111,99,97,116,105,111,110,32,102,111,114,32,105,116,101,109,115,0,37,115,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,123,0,108,97,121,111,117,116,58,32,123,0,119,105,100,116,104,58,32,37,103,44,32,0,104,101,105,103,104,116,58,32,37,103,44,32,0,116,111,112,58,32,37,103,44,32,0,108,101,102,116,58,32,37,103,0,109,97,114,103,105,110,58,32,91,108,58,37,103,44,116,58,37,103,44,114,58,37,103,44,98,58,37,103,44,115,116,97,114,116,58,37,103,44,101,110,100,58,37,103,93,0,98,111,114,100,101,114,58,32,91,108,58,37,103,44,116,58,37,103,44,114,58,37,103,44,98,58,37,103,44,115,116,97,114,116,58,37,103,44,101,110,100,58,37,103,93,0,112,97,100,100,105,110,103,58,32,91,108,58,37,103,44,116,58,37,103,44,114,58,37,103,44,98,58,37,103,44,115,116,97,114,116,58,37,103,44,101,110,100,58,37,103,93,0,125,44,32,0,102,108,101,120,68,105,114,101,99,116,105,111,110,58,32,39,99,111,108,117,109,110,39,44,32,0,102,108,101,120,68,105,114,101,99,116,105,111,110,58,32,39,99,111,108,117,109,110,45,114,101,118,101,114,115,101,39,44,32,0,102,108,101,120,68,105,114,101,99,116,105,111,110,58,32,39,114,111,119,39,44,32,0,102,108,101,120,68,105,114,101,99,116,105,111,110,58,32,39,114,111,119,45,114,101,118,101,114,115,101,39,44,32,0,106,117,115,116,105,102,121,67,111,110,116,101,110,116,58,32,39,99,101,110,116,101,114,39,44,32,0,106,117,115,116,105,102,121,67,111,110,116,101,110,116,58,32,39,102,108,101,120,45,101,110,100,39,44,32,0,106,117,115,116,105,102,121,67,111,110,116,101,110,116,58,32,39,115,112,97,99,101,45,97,114,111,117,110,100,39,44,32,0,106,117,115,116,105,102,121,67,111,110,116,101,110,116,58,32,39,115,112,97,99,101,45,98,101,116,119,101,101,110,39,44,32,0,97,108,105,103,110,73,116,101,109,115,58,32,39,99,101,110,116,101,114,39,44,32,0,97,108,105,103,110,73,116,101,109,115,58,32,39,102,108,101,120,45,101,110,100,39,44,32,0,97,108,105,103,110,73,116,101,109,115,58,32,39,115,116,114,101,116,99,104,39,44,32,0,97,108,105,103,110,67,111,110,116,101,110,116,58,32,39,99,101,110,116,101,114,39,44,32,0,97,108,105,103,110,67,111,110,116,101,110,116,58,32,39,102,108,101,120,45,101,110,100,39,44,32,0,97,108,105,103,110,67,111,110,116,101,110,116,58,32,39,115,116,114,101,116,99,104,39,44,32,0,97,108,105,103,110,83,101,108,102,58,32,39,102,108,101,120,45,115,116,97,114,116,39,44,32,0,97,108,105,103,110,83,101,108,102,58,32,39,99,101,110,116,101,114,39,44,32,0,97,108,105,103,110,83,101,108,102,58,32,39,102,108,101,120,45,101,110,100,39,44,32,0,97,108,105,103,110,83,101,108,102,58,32,39,115,116,114,101,116,99,104,39,44,32,0,102,108,101,120,71,114,111,119,0,102,108,101,120,83,104,114,105,110,107,0,102,108,101,120,66,97,115,105,115,0,111,118,101,114,102,108,111,119,58,32,39,104,105,100,100,101,110,39,44,32,0,111,118,101,114,102,108,111,119,58,32,39,118,105,115,105,98,108,101,39,44,32,0,111,118,101,114,102,108,111,119,58,32,39,115,99,114,111,108,108,39,44,32,0,109,97,114,103,105,110,0,109,97,114,103,105,110,76,101,102,116,0,109,97,114,103,105,110,82,105,103,104,116,0,109,97,114,103,105,110,84,111,112,0,109,97,114,103,105,110,66,111,116,116,111,109,0,109,97,114,103,105,110,83,116,97,114,116,0,109,97,114,103,105,110,69,110,100,0,112,97,100,100,105,110,103,0,112,97,100,100,105,110,103,76,101,102,116,0,112,97,100,100,105,110,103,82,105,103,104,116,0,112,97,100,100,105,110,103,84,111,112,0,112,97,100,100,105,110,103,66,111,116,116,111,109,0,112,97,100,100,105,110,103,83,116,97,114,116,0,112,97,100,100,105,110,103,69,110,100,0,98,111,114,100,101,114,87,105,100,116,104,0,98,111,114,100,101,114,76,101,102,116,87,105,100,116,104,0,98,111,114,100,101,114,82,105,103,104,116,87,105,100,116,104,0,98,111,114,100,101,114,84,111,112,87,105,100,116,104,0,98,111,114,100,101,114,66,111,116,116,111,109,87,105,100,116,104,0,98,111,114,100,101,114,83,116,97,114,116,87,105,100,116,104,0,98,111,114,100,101,114,69,110,100,87,105,100,116,104,0,119,105,100,116,104,0,104,101,105,103,104,116,0,109,97,120,87,105,100,116,104,0,109,97,120,72,101,105,103,104,116,0,109,105,110,87,105,100,116,104,0,109,105,110,72,101,105,103,104,116,0,112,111,115,105,116,105,111,110,58,32,39,97,98,115,111,108,117,116,101,39,44,32,0,108,101,102,116,0,114,105,103,104,116,0,116,111,112,0,98,111,116,116,111,109,0,99,104,105,108,100,114,101,110,58,32,91,10,0,93,125,44,10,0,125,44,10,0,112,116,0,37,0,37,115,58,32,37,103,37,115,44,32,0,67,97,110,110,111,116,32,103,101,116,32,99,111,109,112,117,116,101,100,32,118,97,108,117,101,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,58,32,37,103,44,32,0,32,32,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,42,0,37,115,37,100,46,123,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,105,110,105,116,105,97,108,0,78,111,100,101,0,99,114,101,97,116,101,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,115,101,116,72,97,115,78,101,119,76,97,121,111,117,116,0,103,101,116,72,97,115,78,101,119,76,97,121,111,117,116,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module[\"_i64Subtract\"]=_i64Subtract;Module[\"_i64Add\"]=_i64Add;Module[\"_roundf\"]=_roundf;Module[\"_memset\"]=_memset;Module[\"_bitshift64Shl\"]=_bitshift64Shl;function _abort(){Module[\"abort\"]()}function __decorate(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect===\"object\"&&typeof Reflect.decorate===\"function\")r=Reflect.decorate(decorators,target,key,desc);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;return c>3&&r&&Object.defineProperty(target,key,r),r}function _defineHidden(value){return(function(target,key){Object.defineProperty(target,key,{configurable:false,enumerable:false,value:value,writable:true})})}var _nbind={};function __nbind_free_external(num){_nbind.externalList[num].dereference(num)}function __nbind_reference_external(num){_nbind.externalList[num].reference()}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);Runtime.stackRestore(ret)}function __nbind_register_pool(pageSize,usedPtr,rootPtr,pagePtr){_nbind.Pool.pageSize=pageSize;_nbind.Pool.usedPtr=usedPtr/4;_nbind.Pool.rootPtr=rootPtr;_nbind.Pool.pagePtr=pagePtr/4;HEAP32[usedPtr/4]=16909060;if(HEAP8[usedPtr]==1)_nbind.bigEndian=true;HEAP32[usedPtr/4]=0;_nbind.makeTypeKindTbl=(_a={},_a[1024]=_nbind.PrimitiveType,_a[64]=_nbind.Int64Type,_a[2048]=_nbind.BindClass,_a[3072]=_nbind.BindClassPtr,_a[4096]=_nbind.SharedClassPtr,_a[5120]=_nbind.ArrayType,_a[6144]=_nbind.ArrayType,_a[7168]=_nbind.CStringType,_a[9216]=_nbind.CallbackType,_a[10240]=_nbind.BindType,_a);_nbind.makeTypeNameTbl={\"Buffer\":_nbind.BufferType,\"External\":_nbind.ExternalType,\"Int64\":_nbind.Int64Type,\"_nbind_new\":_nbind.CreateValueType,\"bool\":_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType};Module[\"toggleLightGC\"]=_nbind.toggleLightGC;_nbind.callUpcast=Module[\"dynCall_ii\"];var globalScope=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});globalScope.proto=Module;_nbind.BindClass.list.push(globalScope);var _a}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method=\"timeout\"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method=\"rAF\"}else if(mode==2){if(!window[\"setImmediate\"]){var setImmediates=[];var emscriptenMainLoopMessageId=\"setimmediate\";function Browser_setImmediate_messageHandler(event){if(event.source===window&&event.data===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}window.addEventListener(\"message\",Browser_setImmediate_messageHandler,true);window[\"setImmediate\"]=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module[\"setImmediates\"]===undefined)Module[\"setImmediates\"]=[];Module[\"setImmediates\"].push(func);window.postMessage({target:emscriptenMainLoopMessageId})}else window.postMessage(emscriptenMainLoopMessageId,\"*\")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){window[\"setImmediate\"](Browser.mainLoop.runner)};Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module[\"noExitRuntime\"]=true;assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var browserIterationFunc;if(typeof arg!==\"undefined\"){browserIterationFunc=(function(){Module[\"dynCall_vi\"](func,arg)})}else{browserIterationFunc=(function(){Module[\"dynCall_v\"](func)})}var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker \"'+blocker.name+'\" took '+(Date.now()-start)+\" ms\");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}if(Browser.mainLoop.method===\"timeout\"&&Module.ctx){Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\");Browser.mainLoop.method=\"\"}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL===\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw\"SimulateInfiniteLoop\"}}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module[\"setStatus\"]){var message=Module[\"statusMessage\"]||\"Please wait...\";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module[\"setStatus\"](message+\" (\"+(expected-remaining)+\"/\"+expected+\")\")}else{Module[\"setStatus\"](message)}}else{Module[\"setStatus\"](\"\")}}}),runIter:(function(func){if(ABORT)return;if(Module[\"preMainLoop\"]){var preRet=Module[\"preMainLoop\"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else{if(e&&typeof e===\"object\"&&e.stack)Module.printErr(\"exception thrown: \"+[e,e.stack]);throw e}}if(Module[\"postMainLoop\"])Module[\"postMainLoop\"]()})},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:(function(){if(!Module[\"preloadPlugins\"])Module[\"preloadPlugins\"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder!=\"undefined\"?MozBlobBuilder:typeof WebKitBlobBuilder!=\"undefined\"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log(\"warning: no BlobBuilder\"):null;Browser.URLObject=typeof window!=\"undefined\"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject===\"undefined\"){console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\");Module.noImageDecoding=true}var imagePlugin={};imagePlugin[\"canHandle\"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin[\"handle\"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([(new Uint8Array(byteArray)).buffer],{type:Browser.getMimetype(name)})}}catch(e){Runtime.warnOnce(\"Blob constructor present but fails: \"+e+\"; falling back to blob builder\")}}if(!b){var bb=new Browser.BlobBuilder;bb.append((new Uint8Array(byteArray)).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,\"Image \"+name+\" could not be decoded\");var canvas=document.createElement(\"canvas\");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext(\"2d\");ctx.drawImage(img,0,0);Module[\"preloadedImages\"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log(\"Image \"+url+\" could not be decoded\");if(onerror)onerror()};img.src=url};Module[\"preloadPlugins\"].push(imagePlugin);var audioPlugin={};audioPlugin[\"canHandle\"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}};audioPlugin[\"handle\"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module[\"preloadedAudios\"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module[\"preloadedAudios\"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener(\"canplaythrough\",(function(){finish(audio)}),false);audio.onerror=function audio_onerror(event){if(done)return;console.log(\"warning: browser could not fully decode audio \"+name+\", trying slower base64 approach\");function encode64(data){var BASE=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var PAD=\"=\";var ret=\"\";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src=\"data:audio/x-\"+name.substr(-3)+\";base64,\"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module[\"preloadPlugins\"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document[\"pointerLockElement\"]===Module[\"canvas\"]||document[\"mozPointerLockElement\"]===Module[\"canvas\"]||document[\"webkitPointerLockElement\"]===Module[\"canvas\"]||document[\"msPointerLockElement\"]===Module[\"canvas\"]}var canvas=Module[\"canvas\"];if(canvas){canvas.requestPointerLock=canvas[\"requestPointerLock\"]||canvas[\"mozRequestPointerLock\"]||canvas[\"webkitRequestPointerLock\"]||canvas[\"msRequestPointerLock\"]||(function(){});canvas.exitPointerLock=document[\"exitPointerLock\"]||document[\"mozExitPointerLock\"]||document[\"webkitExitPointerLock\"]||document[\"msExitPointerLock\"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener(\"pointerlockchange\",pointerLockChange,false);document.addEventListener(\"mozpointerlockchange\",pointerLockChange,false);document.addEventListener(\"webkitpointerlockchange\",pointerLockChange,false);document.addEventListener(\"mspointerlockchange\",pointerLockChange,false);if(Module[\"elementPointerLock\"]){canvas.addEventListener(\"click\",(function(ev){if(!Browser.pointerLock&&Module[\"canvas\"].requestPointerLock){Module[\"canvas\"].requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}else{ctx=canvas.getContext(\"2d\")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx===\"undefined\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer===\"undefined\")Browser.lockPointer=true;if(typeof Browser.resizeCanvas===\"undefined\")Browser.resizeCanvas=false;if(typeof Browser.vrDevice===\"undefined\")Browser.vrDevice=null;var canvas=Module[\"canvas\"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document[\"fullscreenElement\"]||document[\"mozFullScreenElement\"]||document[\"msFullscreenElement\"]||document[\"webkitFullscreenElement\"]||document[\"webkitCurrentFullScreenElement\"])===canvasContainer){canvas.exitFullscreen=document[\"exitFullscreen\"]||document[\"cancelFullScreen\"]||document[\"mozCancelFullScreen\"]||document[\"msExitFullscreen\"]||document[\"webkitCancelFullScreen\"]||(function(){});canvas.exitFullscreen=canvas.exitFullscreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas)Browser.setFullscreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module[\"onFullScreen\"])Module[\"onFullScreen\"](Browser.isFullscreen);if(Module[\"onFullscreen\"])Module[\"onFullscreen\"](Browser.isFullscreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener(\"fullscreenchange\",fullscreenChange,false);document.addEventListener(\"mozfullscreenchange\",fullscreenChange,false);document.addEventListener(\"webkitfullscreenchange\",fullscreenChange,false);document.addEventListener(\"MSFullscreenChange\",fullscreenChange,false)}var canvasContainer=document.createElement(\"div\");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer[\"requestFullscreen\"]||canvasContainer[\"mozRequestFullScreen\"]||canvasContainer[\"msRequestFullscreen\"]||(canvasContainer[\"webkitRequestFullscreen\"]?(function(){canvasContainer[\"webkitRequestFullscreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"])}):null)||(canvasContainer[\"webkitRequestFullScreen\"]?(function(){canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"])}):null);if(vrDevice){canvasContainer.requestFullscreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullscreen()}}),requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\");Browser.requestFullScreen=(function(lockPointer,resizeCanvas,vrDevice){return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)});return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window===\"undefined\"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window[\"requestAnimationFrame\"]||window[\"mozRequestAnimationFrame\"]||window[\"webkitRequestAnimationFrame\"]||window[\"msRequestAnimationFrame\"]||window[\"oRequestAnimationFrame\"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{\"jpg\":\"image/jpeg\",\"jpeg\":\"image/jpeg\",\"png\":\"image/png\",\"bmp\":\"image/bmp\",\"ogg\":\"audio/ogg\",\"wav\":\"audio/wav\",\"mp3\":\"audio/mpeg\"}[name.substr(name.lastIndexOf(\".\")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator[\"getUserMedia\"]||navigator[\"mozGetUserMedia\"]}window.getUserMedia(func)}),getMovementX:(function(event){return event[\"movementX\"]||event[\"mozMovementX\"]||event[\"webkitMovementX\"]||0}),getMovementY:(function(event){return event[\"movementY\"]||event[\"mozMovementY\"]||event[\"webkitMovementY\"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case\"DOMMouseScroll\":delta=event.detail;break;case\"mousewheel\":delta=event.wheelDelta;break;case\"wheel\":delta=event[\"deltaY\"];break;default:throw\"unrecognized mouse wheel event: \"+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!=\"mousemove\"&&\"mozMovementX\"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!=\"undefined\"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module[\"canvas\"].getBoundingClientRect();var cw=Module[\"canvas\"].width;var ch=Module[\"canvas\"].height;var scrollX=typeof window.scrollX!==\"undefined\"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!==\"undefined\"?window.scrollY:window.pageYOffset;if(event.type===\"touchstart\"||event.type===\"touchend\"||event.type===\"touchmove\"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type===\"touchstart\"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type===\"touchend\"||event.type===\"touchmove\"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),asyncLoad:(function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency(\"al \"+url):\"\";Module[\"readAsync\"](url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file \"'+url+'\" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)}),(function(event){if(onerror){onerror()}else{throw'Loading data file \"'+url+'\" failed.'}}));if(dep)addRunDependency(dep)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module[\"canvas\"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module[\"canvas\"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module[\"forcedAspectRatio\"]&&Module[\"forcedAspectRatio\"]>0){if(w/h<Module[\"forcedAspectRatio\"]){w=Math.round(h*Module[\"forcedAspectRatio\"])}else{h=Math.round(w/Module[\"forcedAspectRatio\"])}}if((document[\"fullscreenElement\"]||document[\"mozFullScreenElement\"]||document[\"msFullscreenElement\"]||document[\"webkitFullscreenElement\"]||document[\"webkitCurrentFullScreenElement\"])===canvas.parentNode&&typeof screen!=\"undefined\"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!=\"undefined\"){canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!=\"undefined\"){if(w!=wNative||h!=hNative){canvas.style.setProperty(\"width\",w+\"px\",\"important\");canvas.style.setProperty(\"height\",h+\"px\",\"important\")}else{canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\")}}}}),wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:(function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle})};var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module[\"_bitshift64Lshr\"]=_bitshift64Lshr;function _typeModule(self){var structureList=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function applyStructure(outerName,outerFlags,innerName,innerFlags,param,flip){if(outerFlags==1){var ref=innerFlags&896;if(ref==128||ref==256||ref==384)outerName=\"X const\"}var name;if(flip){name=innerName.replace(\"X\",outerName).replace(\"Y\",param)}else{name=outerName.replace(\"X\",innerName).replace(\"Y\",param)}return name.replace(/([*&]) (?=[*&])/g,\"$1\")}function reportProblem(problem,id,kind,structureType,place){throw new Error(problem+\" type \"+kind.replace(\"X\",id+\"?\")+(structureType?\" with flag \"+structureType:\"\")+\" in \"+place)}function getComplexType(id,constructType,getType,queryType,place,kind,prevStructure,depth){if(kind===void 0){kind=\"X\"}if(depth===void 0){depth=1}var result=getType(id);if(result)return result;var query=queryType(id);var structureType=query.placeholderFlag;var structure=structureList[structureType];if(prevStructure&&structure){kind=applyStructure(prevStructure[2],prevStructure[0],kind,structure[0],\"?\",true)}var problem;if(structureType==0)problem=\"Unbound\";if(structureType>=10)problem=\"Corrupt\";if(depth>20)problem=\"Deeply nested\";if(problem)reportProblem(problem,id,kind,structureType,place||\"?\");var subId=query.paramList[0];var subType=getComplexType(subId,constructType,getType,queryType,place,kind,structure,depth+1);var srcSpec;var spec={flags:structure[0],id:id,name:\"\",paramList:[subType]};var argList=[];var structureParam=\"?\";switch(query.placeholderFlag){case 1:srcSpec=subType.spec;break;case 2:if((subType.flags&15360)==1024&&subType.spec.ptrSize==1){spec.flags=7168;break};case 3:case 6:case 5:srcSpec=subType.spec;if((subType.flags&15360)!=2048){}break;case 8:structureParam=\"\"+query.paramList[1];spec.paramList.push(query.paramList[1]);break;case 9:for(var _i=0,_a=query.paramList[1];_i<_a.length;_i++){var paramId=_a[_i];var paramType=getComplexType(paramId,constructType,getType,queryType,place,kind,structure,depth+1);argList.push(paramType.name);spec.paramList.push(paramType)}structureParam=argList.join(\", \");break;default:break}spec.name=applyStructure(structure[2],structure[0],subType.name,subType.flags,structureParam);if(srcSpec){for(var _b=0,_c=Object.keys(srcSpec);_b<_c.length;_b++){var key=_c[_b];spec[key]=spec[key]||srcSpec[key]}spec.flags|=srcSpec.flags}return makeType(constructType,spec)}function makeType(constructType,spec){var flags=spec.flags;var refKind=flags&896;var kind=flags&15360;if(!spec.name&&kind==1024){if(spec.ptrSize==1){spec.name=(flags&16?\"\":(flags&8?\"un\":\"\")+\"signed \")+\"char\"}else{spec.name=(flags&8?\"u\":\"\")+(flags&32?\"float\":\"int\")+(spec.ptrSize*8+\"_t\")}}if(spec.ptrSize==8&&!(flags&32))kind=64;if(kind==2048){if(refKind==512||refKind==640){kind=4096}else if(refKind)kind=3072}return constructType(kind,spec)}var Type=(function(){function Type(spec){this.id=spec.id;this.name=spec.name;this.flags=spec.flags;this.spec=spec}Type.prototype.toString=(function(){return this.name});return Type})();var output={Type:Type,getComplexType:getComplexType,makeType:makeType,structureList:structureList};self.output=output;return self.output||output}function __nbind_register_type(id,namePtr){var name=_nbind.readAsciiString(namePtr);var spec={flags:10240,id:id,name:name};_nbind.makeType(_nbind.constructType,spec)}function __nbind_register_callback_signature(typeListPtr,typeCount){var typeList=_nbind.readTypeIdList(typeListPtr,typeCount);var num=_nbind.callbackSignatureList.length;_nbind.callbackSignatureList[num]=_nbind.makeJSCaller(typeList);return num}function __extends(Class,Parent){for(var key in Parent)if(Parent.hasOwnProperty(key))Class[key]=Parent[key];function Base(){this.constructor=Class}Base.prototype=Parent.prototype;Class.prototype=new Base}function __nbind_register_class(idListPtr,policyListPtr,superListPtr,upcastListPtr,superCount,destructorPtr,namePtr){var name=_nbind.readAsciiString(namePtr);var policyTbl=_nbind.readPolicyList(policyListPtr);var idList=HEAPU32.subarray(idListPtr/4,idListPtr/4+2);var spec={flags:2048|(policyTbl[\"Value\"]?2:0),id:idList[0],name:name};var bindClass=_nbind.makeType(_nbind.constructType,spec);bindClass.ptrType=_nbind.getComplexType(idList[1],_nbind.constructType,_nbind.getType,_nbind.queryType);bindClass.destroy=_nbind.makeMethodCaller(bindClass.ptrType,{boundID:spec.id,flags:0,name:\"destroy\",num:0,ptr:destructorPtr,title:bindClass.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]});if(superCount){bindClass.superIdList=Array.prototype.slice.call(HEAPU32.subarray(superListPtr/4,superListPtr/4+superCount));bindClass.upcastList=Array.prototype.slice.call(HEAPU32.subarray(upcastListPtr/4,upcastListPtr/4+superCount))}Module[bindClass.name]=bindClass.makeBound(policyTbl);_nbind.BindClass.list.push(bindClass)}function _removeAccessorPrefix(name){var prefixMatcher=/^[Gg]et_?([A-Z]?([A-Z]?))/;return name.replace(prefixMatcher,(function(match,initial,second){return second?initial:initial.toLowerCase()}))}function __nbind_register_function(boundID,policyListPtr,typeListPtr,typeCount,ptr,direct,signatureType,namePtr,num,flags){var bindClass=_nbind.getType(boundID);var policyTbl=_nbind.readPolicyList(policyListPtr);var typeList=_nbind.readTypeIdList(typeListPtr,typeCount);var specList;if(signatureType==5){specList=[{direct:ptr,name:\"__nbindConstructor\",ptr:0,title:bindClass.name+\" constructor\",typeList:[\"uint32_t\"].concat(typeList.slice(1))},{direct:direct,name:\"__nbindValueConstructor\",ptr:0,title:bindClass.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(typeList.slice(1))}]}else{var name=_nbind.readAsciiString(namePtr);var title=(bindClass.name&&bindClass.name+\".\")+name;if(signatureType==3||signatureType==4){name=_removeAccessorPrefix(name)}specList=[{boundID:boundID,direct:direct,name:name,ptr:ptr,title:title,typeList:typeList}]}for(var _i=0,specList_1=specList;_i<specList_1.length;_i++){var spec=specList_1[_i];spec.signatureType=signatureType;spec.policyTbl=policyTbl;spec.num=num;spec.flags=flags;bindClass.addMethod(spec)}}function _nbind_value(name,proto){if(!_nbind.typeNameTbl[name])_nbind.throwError(\"Unknown value type \"+name);Module[\"NBind\"].bind_value(name,proto);_defineHidden(_nbind.typeNameTbl[name].proto.prototype.__nbindValueConstructor)(proto.prototype,\"__nbindValueConstructor\")}Module[\"_nbind_value\"]=_nbind_value;function __nbind_get_value_object(num,ptr){var obj=_nbind.popValue(num);if(!obj.fromJS){throw new Error(\"Object \"+obj+\" has no fromJS function\")}obj.fromJS((function(){obj.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([ptr],arguments))}))}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module[\"_memcpy\"]=_memcpy;function __nbind_register_primitive(id,size,flags){var spec={flags:1024|flags,id:id,ptrSize:size};_nbind.makeType(_nbind.constructType,spec)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);Module[\"_llvm_cttz_i32\"]=_llvm_cttz_i32;Module[\"___udivmoddi4\"]=___udivmoddi4;Module[\"___udivdi3\"]=___udivdi3;function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}Module[\"_sbrk\"]=_sbrk;function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());return self.LLVM_SAVEDSTACKS.length-1}Module[\"___uremdi3\"]=___uremdi3;Module[\"_llvm_bswap_i32\"]=_llvm_bswap_i32;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module[\"print\"]:Module[\"printErr\"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j<len;j++){___syscall146.printChar(stream,HEAPU8[ptr+j])}ret+=len}return ret}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __nbind_finish(){for(var _i=0,_a=_nbind.BindClass.list;_i<_a.length;_i++){var bindClass=_a[_i];bindClass.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16;((function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=(function(){function Pool(){}Pool.lalloc=(function(size){size=size+7&~7;var used=HEAPU32[Pool.usedPtr];if(size>Pool.pageSize/2||size>Pool.pageSize-used){var NBind=_nbind.typeNameTbl[\"NBind\"].proto;return NBind.lalloc(size)}else{HEAPU32[Pool.usedPtr]=used+size;return Pool.rootPtr+used}});Pool.lreset=(function(used,page){var topPage=HEAPU32[Pool.pagePtr];if(topPage){var NBind=_nbind.typeNameTbl[\"NBind\"].proto;NBind.lreset(used,page)}else{HEAPU32[Pool.usedPtr]=used}});return Pool})();_nbind.Pool=Pool;function constructType(kind,spec){var construct=kind==10240?_nbind.makeTypeNameTbl[spec.name]||_nbind.BindType:_nbind.makeTypeKindTbl[kind];var bindType=new construct(spec);typeIdTbl[spec.id]=bindType;_nbind.typeNameTbl[spec.name]=bindType;return bindType}_nbind.constructType=constructType;function getType(id){return typeIdTbl[id]}_nbind.getType=getType;function queryType(id){var placeholderFlag=HEAPU8[id];var paramCount=_nbind.structureList[placeholderFlag][1];id/=4;if(paramCount<0){++id;paramCount=HEAPU32[id]+1}var paramList=Array.prototype.slice.call(HEAPU32.subarray(id+1,id+1+paramCount));if(placeholderFlag==9){paramList=[paramList[0],paramList.slice(1)]}return{paramList:paramList,placeholderFlag:placeholderFlag}}_nbind.queryType=queryType;function getTypes(idList,place){return idList.map((function(id){return typeof id==\"number\"?_nbind.getComplexType(id,constructType,getType,queryType,place):_nbind.typeNameTbl[id]}))}_nbind.getTypes=getTypes;function readTypeIdList(typeListPtr,typeCount){return Array.prototype.slice.call(HEAPU32,typeListPtr/4,typeListPtr/4+typeCount)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(ptr){var endPtr=ptr;while(HEAPU8[endPtr++]);return String.fromCharCode.apply(\"\",HEAPU8.subarray(ptr,endPtr-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(policyListPtr){var policyTbl={};if(policyListPtr){while(1){var namePtr=HEAPU32[policyListPtr/4];if(!namePtr)break;policyTbl[readAsciiString(namePtr)]=true;policyListPtr+=4}}return policyTbl}_nbind.readPolicyList=readPolicyList;function getDynCall(typeList,name){var mangleMap={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",\"void\":\"v\"};var signature=typeList.map((function(type){return mangleMap[type.name]||\"i\"})).join(\"\");var dynCall=Module[\"dynCall_\"+signature];if(!dynCall){throw new Error(\"dynCall_\"+signature+\" not found for \"+name+\"(\"+typeList.map((function(type){return type.name})).join(\", \")+\")\")}return dynCall}_nbind.getDynCall=getDynCall;function addMethod(obj,name,func,arity){var overload=obj[name];if(obj.hasOwnProperty(name)&&overload){if(overload.arity||overload.arity===0){overload=_nbind.makeOverloader(overload,overload.arity);obj[name]=overload}overload.addMethod(func,arity)}else{func.arity=arity;obj[name]=func}}_nbind.addMethod=addMethod;function throwError(message){throw new Error(message)}_nbind.throwError=throwError;_nbind.bigEndian=false;_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=(function(_super){__extends(BindType,_super);function BindType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.heap=HEAPU32;_this.ptrSize=4;return _this}BindType.prototype.needsWireRead=(function(policyTbl){return!!this.wireRead||!!this.makeWireRead});BindType.prototype.needsWireWrite=(function(policyTbl){return!!this.wireWrite||!!this.makeWireWrite});return BindType})(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=(function(_super){__extends(PrimitiveType,_super);function PrimitiveType(spec){var _this=_super.call(this,spec)||this;var heapTbl=spec.flags&32?{32:HEAPF32,64:HEAPF64}:spec.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};_this.heap=heapTbl[spec.ptrSize*8];_this.ptrSize=spec.ptrSize;return _this}PrimitiveType.prototype.needsWireWrite=(function(policyTbl){return!!policyTbl&&!!policyTbl[\"Strict\"]});PrimitiveType.prototype.makeWireWrite=(function(expr,policyTbl){return policyTbl&&policyTbl[\"Strict\"]&&(function(arg){if(typeof arg==\"number\")return arg;throw new Error(\"Type mismatch\")})});return PrimitiveType})(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(str,policyTbl){if(str===null||str===undefined){if(policyTbl&&policyTbl[\"Nullable\"]){return 0}else throw new Error(\"Type mismatch\")}if(policyTbl&&policyTbl[\"Strict\"]){if(typeof str!=\"string\")throw new Error(\"Type mismatch\")}else str=str.toString();var length=Module.lengthBytesUTF8(str)+1;var result=_nbind.Pool.lalloc(length);Module.stringToUTF8Array(str,HEAPU8,result,length);return result}_nbind.pushCString=pushCString;function popCString(ptr){if(ptr===0)return null;return Module.Pointer_stringify(ptr)}_nbind.popCString=popCString;var CStringType=(function(_super){__extends(CStringType,_super);function CStringType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireRead=popCString;_this.wireWrite=pushCString;_this.readResources=[_nbind.resources.pool];_this.writeResources=[_nbind.resources.pool];return _this}CStringType.prototype.makeWireWrite=(function(expr,policyTbl){return(function(arg){return pushCString(arg,policyTbl)})});return CStringType})(BindType);_nbind.CStringType=CStringType;var BooleanType=(function(_super){__extends(BooleanType,_super);function BooleanType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireRead=(function(arg){return!!arg});return _this}BooleanType.prototype.needsWireWrite=(function(policyTbl){return!!policyTbl&&!!policyTbl[\"Strict\"]});BooleanType.prototype.makeWireRead=(function(expr){return\"!!(\"+expr+\")\"});BooleanType.prototype.makeWireWrite=(function(expr,policyTbl){return policyTbl&&policyTbl[\"Strict\"]&&(function(arg){if(typeof arg==\"boolean\")return arg;throw new Error(\"Type mismatch\")})||expr});return BooleanType})(BindType);_nbind.BooleanType=BooleanType;var Wrapper=(function(){function Wrapper(){}Wrapper.prototype.persist=(function(){this.__nbindState|=1});return Wrapper})();_nbind.Wrapper=Wrapper;function makeBound(policyTbl,bindClass){var Bound=(function(_super){__extends(Bound,_super);function Bound(marker,flags,ptr,shared){var _this=_super.call(this)||this;if(!(_this instanceof Bound)){return new(Function.prototype.bind.apply(Bound,Array.prototype.concat.apply([null],arguments)))}var nbindFlags=flags;var nbindPtr=ptr;var nbindShared=shared;if(marker!==_nbind.ptrMarker){var wirePtr=_this.__nbindConstructor.apply(_this,arguments);nbindFlags=4096|512;nbindShared=HEAPU32[wirePtr/4];nbindPtr=HEAPU32[wirePtr/4+1]}var spec={configurable:true,enumerable:false,value:null,writable:false};var propTbl={\"__nbindFlags\":nbindFlags,\"__nbindPtr\":nbindPtr};if(nbindShared){propTbl[\"__nbindShared\"]=nbindShared;_nbind.mark(_this)}for(var _i=0,_a=Object.keys(propTbl);_i<_a.length;_i++){var key=_a[_i];spec.value=propTbl[key];Object.defineProperty(_this,key,spec)}_defineHidden(0)(_this,\"__nbindState\");return _this}Bound.prototype.free=(function(){bindClass.destroy.call(this,this.__nbindShared,this.__nbindFlags);this.__nbindState|=2;disableMember(this,\"__nbindShared\");disableMember(this,\"__nbindPtr\")});return Bound})(Wrapper);__decorate([_defineHidden()],Bound.prototype,\"__nbindConstructor\",void 0);__decorate([_defineHidden()],Bound.prototype,\"__nbindValueConstructor\",void 0);__decorate([_defineHidden(policyTbl)],Bound.prototype,\"__nbindPolicies\",void 0);return Bound}_nbind.makeBound=makeBound;function disableMember(obj,name){function die(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(obj,name,{configurable:false,enumerable:false,get:die,set:die})}_nbind.ptrMarker={};var BindClass=(function(_super){__extends(BindClass,_super);function BindClass(spec){var _this=_super.call(this,spec)||this;_this.wireRead=(function(arg){return _nbind.popValue(arg,_this.ptrType)});_this.wireWrite=(function(arg){return pushPointer(arg,_this.ptrType,true)});_this.pendingSuperCount=0;_this.ready=false;_this.methodTbl={};if(spec.paramList){_this.classType=spec.paramList[0].classType;_this.proto=_this.classType.proto}else _this.classType=_this;return _this}BindClass.prototype.makeBound=(function(policyTbl){var Bound=_nbind.makeBound(policyTbl,this);this.proto=Bound;this.ptrType.proto=Bound;return Bound});BindClass.prototype.addMethod=(function(spec){var overloadList=this.methodTbl[spec.name]||[];overloadList.push(spec);this.methodTbl[spec.name]=overloadList});BindClass.prototype.registerMethods=(function(src,staticOnly){var setter;for(var _i=0,_a=Object.keys(src.methodTbl);_i<_a.length;_i++){var name=_a[_i];var overloadList=src.methodTbl[name];for(var _b=0,overloadList_1=overloadList;_b<overloadList_1.length;_b++){var spec=overloadList_1[_b];var target=void 0;var caller=void 0;target=this.proto.prototype;if(staticOnly&&spec.signatureType!=1)continue;switch(spec.signatureType){case 1:target=this.proto;case 5:caller=_nbind.makeCaller(spec);_nbind.addMethod(target,spec.name,caller,spec.typeList.length-1);break;case 4:setter=_nbind.makeMethodCaller(src.ptrType,spec);break;case 3:Object.defineProperty(target,spec.name,{configurable:true,enumerable:false,get:_nbind.makeMethodCaller(src.ptrType,spec),set:setter});break;case 2:caller=_nbind.makeMethodCaller(src.ptrType,spec);_nbind.addMethod(target,spec.name,caller,spec.typeList.length-1);break;default:break}}}});BindClass.prototype.registerSuperMethods=(function(src,firstSuper,visitTbl){if(visitTbl[src.name])return;visitTbl[src.name]=true;var superNum=0;var nextFirst;for(var _i=0,_a=src.superIdList||[];_i<_a.length;_i++){var superId=_a[_i];var superClass=_nbind.getType(superId);if(superNum++<firstSuper||firstSuper<0){nextFirst=-1}else{nextFirst=0}this.registerSuperMethods(superClass,nextFirst,visitTbl)}this.registerMethods(src,firstSuper<0)});BindClass.prototype.finish=(function(){if(this.ready)return this;this.ready=true;this.superList=(this.superIdList||[]).map((function(superId){return _nbind.getType(superId).finish()}));var Bound=this.proto;if(this.superList.length){var Proto=(function(){this.constructor=Bound});Proto.prototype=this.superList[0].proto.prototype;Bound.prototype=new Proto}if(Bound!=Module)Bound.prototype.__nbindType=this;this.registerSuperMethods(this,1,{});return this});BindClass.prototype.upcastStep=(function(dst,ptr){if(dst==this)return ptr;for(var i=0;i<this.superList.length;++i){var superPtr=this.superList[i].upcastStep(dst,_nbind.callUpcast(this.upcastList[i],ptr));if(superPtr)return superPtr}return 0});return BindClass})(_nbind.BindType);BindClass.list=[];_nbind.BindClass=BindClass;function popPointer(ptr,type){return ptr?new type.proto(_nbind.ptrMarker,type.flags,ptr):null}_nbind.popPointer=popPointer;function pushPointer(obj,type,tryValue){if(!(obj instanceof _nbind.Wrapper)){if(tryValue){return _nbind.pushValue(obj)}else throw new Error(\"Type mismatch\")}var ptr=obj.__nbindPtr;var objType=obj.__nbindType.classType;var classType=type.classType;if(obj instanceof type.proto){while(objType!=classType){ptr=_nbind.callUpcast(objType.upcastList[0],ptr);objType=objType.superList[0]}}else{ptr=objType.upcastStep(classType,ptr);if(!ptr)throw new Error(\"Type mismatch\")}return ptr}_nbind.pushPointer=pushPointer;function pushMutablePointer(obj,type){var ptr=pushPointer(obj,type);if(obj.__nbindFlags&1){throw new Error(\"Passing a const value as a non-const argument\")}return ptr}var BindClassPtr=(function(_super){__extends(BindClassPtr,_super);function BindClassPtr(spec){var _this=_super.call(this,spec)||this;_this.classType=spec.paramList[0].classType;_this.proto=_this.classType.proto;var isConst=spec.flags&1;var isValue=(_this.flags&896)==256&&spec.flags&2;var push=isConst?pushPointer:pushMutablePointer;var pop=isValue?_nbind.popValue:popPointer;_this.makeWireWrite=(function(expr,policyTbl){return policyTbl[\"Nullable\"]?(function(arg){return arg?push(arg,_this):0}):(function(arg){return push(arg,_this)})});_this.wireRead=(function(arg){return pop(arg,_this)});_this.wireWrite=(function(arg){return push(arg,_this)});return _this}return BindClassPtr})(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(ptr,type){var shared=HEAPU32[ptr/4];var unsafe=HEAPU32[ptr/4+1];return unsafe?new type.proto(_nbind.ptrMarker,type.flags,unsafe,shared):null}_nbind.popShared=popShared;function pushShared(obj,type){if(!(obj instanceof type.proto))throw new Error(\"Type mismatch\");return obj.__nbindShared}function pushMutableShared(obj,type){if(!(obj instanceof type.proto))throw new Error(\"Type mismatch\");if(obj.__nbindFlags&1){throw new Error(\"Passing a const value as a non-const argument\")}return obj.__nbindShared}var SharedClassPtr=(function(_super){__extends(SharedClassPtr,_super);function SharedClassPtr(spec){var _this=_super.call(this,spec)||this;_this.readResources=[_nbind.resources.pool];_this.classType=spec.paramList[0].classType;_this.proto=_this.classType.proto;var isConst=spec.flags&1;var push=isConst?pushShared:pushMutableShared;_this.wireRead=(function(arg){return popShared(arg,_this)});_this.wireWrite=(function(arg){return push(arg,_this)});return _this}return SharedClassPtr})(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr;_nbind.externalList=[0];var firstFreeExternal=0;var External=(function(){function External(data){this.refCount=1;this.data=data}External.prototype.register=(function(){var num=firstFreeExternal;if(num){firstFreeExternal=_nbind.externalList[num]}else num=_nbind.externalList.length;_nbind.externalList[num]=this;return num});External.prototype.reference=(function(){++this.refCount});External.prototype.dereference=(function(num){if(--this.refCount==0){if(this.free)this.free();_nbind.externalList[num]=firstFreeExternal;firstFreeExternal=num}});return External})();_nbind.External=External;function popExternal(num){var obj=_nbind.externalList[num];obj.dereference(num);return obj.data}function pushExternal(obj){var external=new External(obj);external.reference();return external.register()}var ExternalType=(function(_super){__extends(ExternalType,_super);function ExternalType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireRead=popExternal;_this.wireWrite=pushExternal;return _this}return ExternalType})(_nbind.BindType);_nbind.ExternalType=ExternalType;_nbind.callbackSignatureList=[];var CallbackType=(function(_super){__extends(CallbackType,_super);function CallbackType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireWrite=(function(func){if(typeof func!=\"function\")_nbind.throwError(\"Type mismatch\");return(new _nbind.External(func)).register()});return _this}return CallbackType})(_nbind.BindType);_nbind.CallbackType=CallbackType;_nbind.valueList=[0];var firstFreeValue=0;function pushValue(value){var num=firstFreeValue;if(num){firstFreeValue=_nbind.valueList[num]}else num=_nbind.valueList.length;_nbind.valueList[num]=value;return num*2+1}_nbind.pushValue=pushValue;function popValue(num,type){if(!num)_nbind.throwError(\"Value type JavaScript class is missing or not registered\");if(num&1){num>>=1;var obj=_nbind.valueList[num];_nbind.valueList[num]=firstFreeValue;firstFreeValue=num;return obj}else if(type){return _nbind.popShared(num,type)}else throw new Error(\"Invalid value slot \"+num)}_nbind.popValue=popValue;var valueBase=0x10000000000000000;function push64(num){if(typeof num==\"number\")return num;return pushValue(num)*4096+valueBase}function pop64(num){if(num<valueBase)return num;return popValue((num-valueBase)/4096)}var CreateValueType=(function(_super){__extends(CreateValueType,_super);function CreateValueType(){return _super!==null&&_super.apply(this,arguments)||this}CreateValueType.prototype.makeWireWrite=(function(expr){return\"(_nbind.pushValue(new \"+expr+\"))\"});return CreateValueType})(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=(function(_super){__extends(Int64Type,_super);function Int64Type(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireWrite=push64;_this.wireRead=pop64;return _this}return Int64Type})(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(arr,type){if(!arr)return 0;var length=arr.length;if((type.size||type.size===0)&&length<type.size){throw new Error(\"Type mismatch\")}var ptrSize=type.memberType.ptrSize;var result=_nbind.Pool.lalloc(4+length*ptrSize);HEAPU32[result/4]=length;var heap=type.memberType.heap;var ptr=(result+4)/ptrSize;var wireWrite=type.memberType.wireWrite;var num=0;if(wireWrite){while(num<length){heap[ptr++]=wireWrite(arr[num++])}}else{while(num<length){heap[ptr++]=arr[num++]}}return result}_nbind.pushArray=pushArray;function popArray(ptr,type){if(ptr===0)return null;var length=HEAPU32[ptr/4];var arr=new Array(length);var heap=type.memberType.heap;ptr=(ptr+4)/type.memberType.ptrSize;var wireRead=type.memberType.wireRead;var num=0;if(wireRead){while(num<length){arr[num++]=wireRead(heap[ptr++])}}else{while(num<length){arr[num++]=heap[ptr++]}}return arr}_nbind.popArray=popArray;var ArrayType=(function(_super){__extends(ArrayType,_super);function ArrayType(spec){var _this=_super.call(this,spec)||this;_this.wireRead=(function(arg){return popArray(arg,_this)});_this.wireWrite=(function(arg){return pushArray(arg,_this)});_this.readResources=[_nbind.resources.pool];_this.writeResources=[_nbind.resources.pool];_this.memberType=spec.paramList[0];if(spec.paramList[1])_this.size=spec.paramList[1];return _this}return ArrayType})(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(str,policyTbl){if(str===null||str===undefined){if(policyTbl&&policyTbl[\"Nullable\"]){str=\"\"}else throw new Error(\"Type mismatch\")}if(policyTbl&&policyTbl[\"Strict\"]){if(typeof str!=\"string\")throw new Error(\"Type mismatch\")}else str=str.toString();var length=Module.lengthBytesUTF8(str);var result=_nbind.Pool.lalloc(4+length+1);HEAPU32[result/4]=length;Module.stringToUTF8Array(str,HEAPU8,result+4,length+1);return result}_nbind.pushString=pushString;function popString(ptr){if(ptr===0)return null;var length=HEAPU32[ptr/4];return Module.Pointer_stringify(ptr+4,length)}_nbind.popString=popString;var StringType=(function(_super){__extends(StringType,_super);function StringType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireRead=popString;_this.wireWrite=pushString;_this.readResources=[_nbind.resources.pool];_this.writeResources=[_nbind.resources.pool];return _this}StringType.prototype.makeWireWrite=(function(expr,policyTbl){return(function(arg){return pushString(arg,policyTbl)})});return StringType})(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(argCount){return Array.apply(null,Array(argCount)).map((function(dummy,num){return\"a\"+(num+1)}))}function anyNeedsWireWrite(typeList,policyTbl){return typeList.reduce((function(result,type){return result||type.needsWireWrite(policyTbl)}),false)}function anyNeedsWireRead(typeList,policyTbl){return typeList.reduce((function(result,type){return result||!!type.needsWireRead(policyTbl)}),false)}function makeWireRead(convertParamList,policyTbl,type,expr){var paramNum=convertParamList.length;if(type.makeWireRead){return type.makeWireRead(expr,convertParamList,paramNum)}else if(type.wireRead){convertParamList[paramNum]=type.wireRead;return\"(convertParamList[\"+paramNum+\"](\"+expr+\"))\"}else return expr}function makeWireWrite(convertParamList,policyTbl,type,expr){var wireWrite;var paramNum=convertParamList.length;if(type.makeWireWrite){wireWrite=type.makeWireWrite(expr,policyTbl,convertParamList,paramNum)}else wireWrite=type.wireWrite;if(wireWrite){if(typeof wireWrite==\"string\"){return wireWrite}else{convertParamList[paramNum]=wireWrite;return\"(convertParamList[\"+paramNum+\"](\"+expr+\"))\"}}else return expr}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length);var convertParamList=[];var callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map((function(name,index){return makeWireWrite(convertParamList,policyTbl,argTypeList[index],name)}))).join(\",\")+\")\");var resourceSet=_nbind.listResources([returnType],argTypeList);var sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;\"+\"}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length);var convertParamList=[];var callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map((function(name,index){return makeWireRead(convertParamList,null,argTypeList[index],name)})).join(\",\")+\")\");var resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;\"+\"}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(idList){var argCount=idList.length-1;var typeList=_nbind.getTypes(idList,\"callback\");var returnType=typeList[0];var argTypeList=typeList.slice(1);var needsWireRead=anyNeedsWireRead(argTypeList,null);var needsWireWrite=returnType.needsWireWrite(null);if(!needsWireWrite&&!needsWireRead){switch(argCount){case 0:return(function(dummy,num){return _nbind.externalList[num].data()});case 1:return(function(dummy,num,a1){return _nbind.externalList[num].data(a1)});case 2:return(function(dummy,num,a1,a2){return _nbind.externalList[num].data(a1,a2)});case 3:return(function(dummy,num,a1,a2,a3){return _nbind.externalList[num].data(a1,a2,a3)});default:break}}return buildJSCallerFunction(returnType,argTypeList)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(ptrType,spec){var argCount=spec.typeList.length-1;var typeIdList=spec.typeList.slice(0);typeIdList.splice(1,0,\"uint32_t\",spec.boundID);var typeList=_nbind.getTypes(typeIdList,spec.title);var returnType=typeList[0];var argTypeList=typeList.slice(3);var needsWireRead=returnType.needsWireRead(spec.policyTbl);var needsWireWrite=anyNeedsWireWrite(argTypeList,spec.policyTbl);var ptr=spec.ptr;var num=spec.num;var dynCall=_nbind.getDynCall(typeList,spec.title);var mask=~spec.flags&1;function err(){throw new Error(\"Calling a non-const method on a const object\")}if(!needsWireRead&&!needsWireWrite){switch(argCount){case 0:return(function(){return this.__nbindFlags&mask?err():dynCall(ptr,num,_nbind.pushPointer(this,ptrType))});case 1:return(function(a1){return this.__nbindFlags&mask?err():dynCall(ptr,num,_nbind.pushPointer(this,ptrType),a1)});case 2:return(function(a1,a2){return this.__nbindFlags&mask?err():dynCall(ptr,num,_nbind.pushPointer(this,ptrType),a1,a2)});case 3:return(function(a1,a2,a3){return this.__nbindFlags&mask?err():dynCall(ptr,num,_nbind.pushPointer(this,ptrType),a1,a2,a3)});default:break}}return buildCallerFunction(dynCall,ptrType,ptr,num,spec.policyTbl,needsWireWrite,\"ptr,num,pushPointer(this,ptrType)\",returnType,argTypeList,mask,err)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(spec){var argCount=spec.typeList.length-1;var typeList=_nbind.getTypes(spec.typeList,spec.title);var returnType=typeList[0];var argTypeList=typeList.slice(1);var needsWireRead=returnType.needsWireRead(spec.policyTbl);var needsWireWrite=anyNeedsWireWrite(argTypeList,spec.policyTbl);var direct=spec.direct;var dynCall;var ptr=spec.ptr;if(spec.direct&&!needsWireRead&&!needsWireWrite){dynCall=_nbind.getDynCall(typeList,spec.title);switch(argCount){case 0:return(function(){return dynCall(direct)});case 1:return(function(a1){return dynCall(direct,a1)});case 2:return(function(a1,a2){return dynCall(direct,a1,a2)});case 3:return(function(a1,a2,a3){return dynCall(direct,a1,a2,a3)});default:break}ptr=0}var prefix;if(ptr){var typeIdList=spec.typeList.slice(0);typeIdList.splice(1,0,\"uint32_t\");typeList=_nbind.getTypes(typeIdList,spec.title);prefix=\"ptr,num\"}else{ptr=direct;prefix=\"ptr\"}dynCall=_nbind.getDynCall(typeList,spec.title);return buildCallerFunction(dynCall,null,ptr,spec.num,spec.policyTbl,needsWireWrite,prefix,returnType,argTypeList)}_nbind.makeCaller=makeCaller;function makeOverloader(func,arity){var callerList=[];function call(){return callerList[arguments.length].apply(this,arguments)}call.addMethod=(function(_func,_arity){callerList[_arity]=_func});call.addMethod(func,arity);return call}_nbind.makeOverloader=makeOverloader;var Resource=(function(){function Resource(open,close){var _this=this;this.makeOpen=(function(){return Object.keys(_this.openTbl).join(\"\")});this.makeClose=(function(){return Object.keys(_this.closeTbl).join(\"\")});this.openTbl={};this.closeTbl={};if(open)this.openTbl[open]=true;if(close)this.closeTbl[close]=true}Resource.prototype.add=(function(other){for(var _i=0,_a=Object.keys(other.openTbl);_i<_a.length;_i++){var key=_a[_i];this.openTbl[key]=true}for(var _b=0,_c=Object.keys(other.closeTbl);_b<_c.length;_b++){var key=_c[_b];this.closeTbl[key]=true}});Resource.prototype.remove=(function(other){for(var _i=0,_a=Object.keys(other.openTbl);_i<_a.length;_i++){var key=_a[_i];delete this.openTbl[key]}for(var _b=0,_c=Object.keys(other.closeTbl);_b<_c.length;_b++){var key=_c[_b];delete this.closeTbl[key]}});return Resource})();_nbind.Resource=Resource;function listResources(readList,writeList){var result=new Resource;for(var _i=0,readList_1=readList;_i<readList_1.length;_i++){var bindType=readList_1[_i];for(var _a=0,_b=bindType.readResources||[];_a<_b.length;_a++){var resource=_b[_a];result.add(resource)}}for(var _c=0,writeList_1=writeList;_c<writeList_1.length;_c++){var bindType=writeList_1[_c];for(var _d=0,_e=bindType.writeResources||[];_d<_e.length;_d++){var resource=_e[_d];result.add(resource)}}return result}_nbind.listResources=listResources;_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=(function(_super){__extends(ExternalBuffer,_super);function ExternalBuffer(buf,ptr){var _this=_super.call(this,buf)||this;_this.ptr=ptr;return _this}ExternalBuffer.prototype.free=(function(){_free(this.ptr)});return ExternalBuffer})(_nbind.External);function getBuffer(buf){if(buf instanceof ArrayBuffer){return new Uint8Array(buf)}else if(buf instanceof DataView){return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}else return buf}function pushBuffer(buf,policyTbl){if(buf===null||buf===undefined){if(policyTbl&&policyTbl[\"Nullable\"])buf=[]}if(typeof buf!=\"object\")throw new Error(\"Type mismatch\");var b=buf;var length=b.byteLength||b.length;if(!length&&length!==0&&b.byteLength!==0)throw new Error(\"Type mismatch\");var result=_nbind.Pool.lalloc(8);var data=_malloc(length);var ptr=result/4;HEAPU32[ptr++]=length;HEAPU32[ptr++]=data;HEAPU32[ptr++]=(new ExternalBuffer(buf,data)).register();HEAPU8.set(getBuffer(buf),data);return result}var BufferType=(function(_super){__extends(BufferType,_super);function BufferType(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.wireWrite=pushBuffer;_this.readResources=[_nbind.resources.pool];_this.writeResources=[_nbind.resources.pool];return _this}BufferType.prototype.makeWireWrite=(function(expr,policyTbl){return(function(arg){return pushBuffer(arg,policyTbl)})});return BufferType})(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(num,data,length){var buf=_nbind.externalList[num].data;var NodeBuffer=Buffer;if(typeof Buffer!=\"function\")NodeBuffer=(function(){});if(buf instanceof Array){}else{var src=HEAPU8.subarray(data,data+length);if(buf instanceof NodeBuffer){var srcBuf=void 0;if(typeof Buffer.from==\"function\"&&Buffer.from.length>=3){srcBuf=Buffer.from(src)}else srcBuf=new Buffer(src);srcBuf.copy(buf)}else getBuffer(buf).set(src)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[];var gcTimer=0;function sweep(){for(var _i=0,dirtyList_1=dirtyList;_i<dirtyList_1.length;_i++){var obj=dirtyList_1[_i];if(!(obj.__nbindState&(1|2))){obj.free()}}dirtyList=[];gcTimer=0}_nbind.mark=(function(obj){});function toggleLightGC(enable){if(enable){_nbind.mark=(function(obj){dirtyList.push(obj);if(!gcTimer)gcTimer=setTimeout(sweep,0)})}else{_nbind.mark=(function(obj){})}}_nbind.toggleLightGC=toggleLightGC}))(_nbind);Module[\"requestFullScreen\"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\");Module[\"requestFullScreen\"]=Module[\"requestFullscreen\"];Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module[\"requestFullscreen\"]=function Module_requestFullscreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)};Module[\"requestAnimationFrame\"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module[\"setCanvasSize\"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module[\"pauseMainLoop\"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module[\"resumeMainLoop\"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module[\"getUserMedia\"]=function Module_getUserMedia(){Browser.getUserMedia()};Module[\"createContext\"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}__ATEXIT__.push((function(){var fflush=Module[\"_fflush\"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}));DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vid(index,a1,a2){try{Module[\"dynCall_vid\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_fiff(index,a1,a2,a3){try{return Module[\"dynCall_fiff\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viddi(index,a1,a2,a3,a4){try{Module[\"dynCall_viddi\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vidd(index,a1,a2,a3){try{Module[\"dynCall_vidd\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_diii(index,a1,a2,a3){try{return Module[\"dynCall_diii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_di(index,a1){try{return Module[\"dynCall_di\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iid(index,a1,a2){try{return Module[\"dynCall_iid\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iii(index,a1,a2){try{return Module[\"dynCall_iii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiddi\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_dii(index,a1,a2){try{return Module[\"dynCall_dii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_i(index){try{return Module[\"dynCall_i\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiid(index,a1,a2,a3,a4){try{Module[\"dynCall_viiid\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viififi(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viififi\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module[\"dynCall_viii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viid(index,a1,a2,a3){try{Module[\"dynCall_viid\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_idd(index,a1,a2){try{return Module[\"dynCall_idd\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_viiiii\":invoke_viiiii,\"invoke_vid\":invoke_vid,\"invoke_fiff\":invoke_fiff,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_ii\":invoke_ii,\"invoke_viddi\":invoke_viddi,\"invoke_vidd\":invoke_vidd,\"invoke_iiii\":invoke_iiii,\"invoke_diii\":invoke_diii,\"invoke_di\":invoke_di,\"invoke_iid\":invoke_iid,\"invoke_iii\":invoke_iii,\"invoke_viiddi\":invoke_viiddi,\"invoke_viiiiii\":invoke_viiiiii,\"invoke_dii\":invoke_dii,\"invoke_i\":invoke_i,\"invoke_viiid\":invoke_viiid,\"invoke_viififi\":invoke_viififi,\"invoke_viii\":invoke_viii,\"invoke_v\":invoke_v,\"invoke_viid\":invoke_viid,\"invoke_idd\":invoke_idd,\"invoke_viiii\":invoke_viiii,\"_emscripten_asm_const_iiiii\":_emscripten_asm_const_iiiii,\"_emscripten_asm_const_iiidddddd\":_emscripten_asm_const_iiidddddd,\"_emscripten_asm_const_iiiid\":_emscripten_asm_const_iiiid,\"__nbind_reference_external\":__nbind_reference_external,\"_emscripten_asm_const_iiiiiiii\":_emscripten_asm_const_iiiiiiii,\"_removeAccessorPrefix\":_removeAccessorPrefix,\"_typeModule\":_typeModule,\"__nbind_register_pool\":__nbind_register_pool,\"__decorate\":__decorate,\"_llvm_stackrestore\":_llvm_stackrestore,\"___cxa_atexit\":___cxa_atexit,\"__extends\":__extends,\"__nbind_get_value_object\":__nbind_get_value_object,\"_emscripten_set_main_loop_timing\":_emscripten_set_main_loop_timing,\"__nbind_register_primitive\":__nbind_register_primitive,\"__nbind_register_type\":__nbind_register_type,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"__nbind_register_function\":__nbind_register_function,\"___setErrNo\":___setErrNo,\"__nbind_register_class\":__nbind_register_class,\"__nbind_finish\":__nbind_finish,\"_abort\":_abort,\"_nbind_value\":_nbind_value,\"_llvm_stacksave\":_llvm_stacksave,\"___syscall54\":___syscall54,\"_defineHidden\":_defineHidden,\"_emscripten_set_main_loop\":_emscripten_set_main_loop,\"_emscripten_get_now\":_emscripten_get_now,\"__nbind_register_callback_signature\":__nbind_register_callback_signature,\"_emscripten_asm_const_iiiiii\":_emscripten_asm_const_iiiiii,\"__nbind_free_external\":__nbind_free_external,\"_emscripten_asm_const_iiii\":_emscripten_asm_const_iiii,\"_emscripten_asm_const_iiididi\":_emscripten_asm_const_iiididi,\"___syscall6\":___syscall6,\"_atexit\":_atexit,\"___syscall140\":___syscall140,\"___syscall146\":___syscall146,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX,\"cttz_i8\":cttz_i8,\"___dso_handle\":___dso_handle};// EMSCRIPTEN_START_ASM\nvar asm=(function(global,env,buffer) {\n\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=env.___dso_handle|0;var p=0;var q=0;var r=0;var s=0;var t=global.NaN,u=global.Infinity;var v=0,w=0,x=0,y=0,z=0.0;var A=0;var B=global.Math.floor;var C=global.Math.abs;var D=global.Math.sqrt;var E=global.Math.pow;var F=global.Math.cos;var G=global.Math.sin;var H=global.Math.tan;var I=global.Math.acos;var J=global.Math.asin;var K=global.Math.atan;var L=global.Math.atan2;var M=global.Math.exp;var N=global.Math.log;var O=global.Math.ceil;var P=global.Math.imul;var Q=global.Math.min;var R=global.Math.max;var S=global.Math.clz32;var T=global.Math.fround;var U=env.abort;var V=env.assert;var W=env.enlargeMemory;var X=env.getTotalMemory;var Y=env.abortOnCannotGrowMemory;var Z=env.invoke_viiiii;var _=env.invoke_vid;var $=env.invoke_fiff;var aa=env.invoke_vi;var ba=env.invoke_vii;var ca=env.invoke_ii;var da=env.invoke_viddi;var ea=env.invoke_vidd;var fa=env.invoke_iiii;var ga=env.invoke_diii;var ha=env.invoke_di;var ia=env.invoke_iid;var ja=env.invoke_iii;var ka=env.invoke_viiddi;var la=env.invoke_viiiiii;var ma=env.invoke_dii;var na=env.invoke_i;var oa=env.invoke_viiid;var pa=env.invoke_viififi;var qa=env.invoke_viii;var ra=env.invoke_v;var sa=env.invoke_viid;var ta=env.invoke_idd;var ua=env.invoke_viiii;var va=env._emscripten_asm_const_iiiii;var wa=env._emscripten_asm_const_iiidddddd;var xa=env._emscripten_asm_const_iiiid;var ya=env.__nbind_reference_external;var za=env._emscripten_asm_const_iiiiiiii;var Aa=env._removeAccessorPrefix;var Ba=env._typeModule;var Ca=env.__nbind_register_pool;var Da=env.__decorate;var Ea=env._llvm_stackrestore;var Fa=env.___cxa_atexit;var Ga=env.__extends;var Ha=env.__nbind_get_value_object;var Ia=env._emscripten_set_main_loop_timing;var Ja=env.__nbind_register_primitive;var Ka=env.__nbind_register_type;var La=env._emscripten_memcpy_big;var Ma=env.__nbind_register_function;var Na=env.___setErrNo;var Oa=env.__nbind_register_class;var Pa=env.__nbind_finish;var Qa=env._abort;var Ra=env._nbind_value;var Sa=env._llvm_stacksave;var Ta=env.___syscall54;var Ua=env._defineHidden;var Va=env._emscripten_set_main_loop;var Wa=env._emscripten_get_now;var Xa=env.__nbind_register_callback_signature;var Ya=env._emscripten_asm_const_iiiiii;var Za=env.__nbind_free_external;var _a=env._emscripten_asm_const_iiii;var $a=env._emscripten_asm_const_iiididi;var ab=env.___syscall6;var bb=env._atexit;var cb=env.___syscall140;var db=env.___syscall146;var eb=T(0);const fb=T(0);\n// EMSCRIPTEN_START_FUNCS\nfunction Eb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function Fb(){return l|0}function Gb(a){a=a|0;l=a}function Hb(a,b){a=a|0;b=b|0;l=a;m=b}function Ib(a,b){a=a|0;b=b|0;if(!p){p=a;q=b}}function Jb(a){a=a|0;A=a}function Kb(){return A|0}function Lb(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f+8|0;d=f;b=lb[c[2]&31](12)|0;if(!b){c[d>>2]=2464;Tb(0,2573,d);Qa()}c[b>>2]=a;c[b+4>>2]=0;d=lb[c[2]&31](a<<2)|0;c[b+8>>2]=d;if(!d){c[e>>2]=2499;Tb(0,2573,e);Qa()}else{l=f;return b|0}return 0}function Mb(a){a=a|0;if(!a)return;jb[c[4]&127](c[a+8>>2]|0);jb[c[4]&127](a);return}function Nb(a){a=a|0;if(!a)a=0;else a=c[a+4>>2]|0;return a|0}function Ob(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;g=c[a>>2]|0;if(!g){g=Lb(4)|0;c[a>>2]=g}h=g+4|0;a=c[h>>2]|0;do if((a|0)==(c[g>>2]|0)){c[g>>2]=a<<1;g=g+8|0;a=sb[c[3]&15](c[g>>2]|0,a<<3)|0;c[g>>2]=a;if(!a){c[i>>2]=2535;Tb(0,2573,i);Qa()}else{j=g;f=c[h>>2]|0;e=a;break}}else{e=g+8|0;j=e;f=a;e=c[e>>2]|0}while(0);if(f>>>0<=d>>>0){j=e;i=f;i=i+1|0;c[h>>2]=i;d=j+(d<<2)|0;c[d>>2]=b;l=k;return}do{i=f;f=f+-1|0;c[e+(i<<2)>>2]=c[e+(f<<2)>>2];e=c[j>>2]|0}while(f>>>0>d>>>0);j=e;i=c[h>>2]|0;i=i+1|0;c[h>>2]=i;d=j+(d<<2)|0;c[d>>2]=b;l=k;return}function Pb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+8|0;e=(c[d>>2]|0)+(b<<2)|0;f=c[e>>2]|0;c[e>>2]=0;e=a+4|0;a=(c[e>>2]|0)+-1|0;if(a>>>0<=b>>>0){d=a;c[e>>2]=d;return f|0}do{g=c[d>>2]|0;a=b;b=b+1|0;c[g+(a<<2)>>2]=c[g+(b<<2)>>2];c[(c[d>>2]|0)+(b<<2)>>2]=0;a=(c[e>>2]|0)+-1|0}while(b>>>0<a>>>0);c[e>>2]=a;return f|0}function Qb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=c[a+4>>2]|0;if(!e){g=0;return g|0}f=c[a+8>>2]|0;d=0;while(1){if((c[f+(d<<2)>>2]|0)==(b|0))break;d=d+1|0;if(d>>>0>=e>>>0){d=0;g=6;break}}if((g|0)==6)return d|0;g=Pb(a,d)|0;return g|0}function Rb(a,b){a=a|0;b=b|0;if(!(Nb(a)|0)){b=0;return b|0}b=c[(c[a+8>>2]|0)+(b<<2)>>2]|0;return b|0}function Sb(){var a=0,b=0,d=0;d=l;l=l+16|0;b=d;a=lb[c[2]&31](980)|0;if(!a){c[b>>2]=2576;Tb(0,2573,b);Qa()}else{c[2326]=(c[2326]|0)+1;KA(a|0,20,980)|0;l=d;return a|0}return 0}function Tb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;ob[c[252]&7](a,b,f)|0;l=e;return}function Ub(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){d=Hz(c[491]|0,b,d)|0;return d|0}else{d=rA(b,d)|0;return d|0}return 0}function Vb(a){a=a|0;var b=0,d=0;b=a+940|0;d=c[b>>2]|0;if(d|0){Qb(c[d+944>>2]|0,a)|0;c[b>>2]=0}d=Wb(a)|0;if(d|0){b=0;do{c[(Xb(a,b)|0)+940>>2]=0;b=b+1|0}while((b|0)!=(d|0))}Mb(c[a+944>>2]|0);jb[c[4]&127](a);c[2326]=(c[2326]|0)+-1;return}function Wb(a){a=a|0;return Nb(c[a+944>>2]|0)|0}function Xb(a,b){a=a|0;b=b|0;return Rb(c[a+944>>2]|0,b)|0}function Yb(a,b){a=a|0;b=b|0;if(!(Qb(c[a+944>>2]|0,b)|0))return;c[b+940>>2]=0;Zb(a);return}function Zb(b){b=b|0;var d=0;while(1){d=b+968|0;if(a[d>>0]|0){b=4;break}a[d>>0]=1;g[b+504>>2]=T(t);b=c[b+940>>2]|0;if(!b){b=4;break}}if((b|0)==4)return}function _b(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e+8|0;b=e;if(Wb(a)|0){c[b>>2]=2611;Tb(0,2573,b);Qa()}if(!(c[a+940>>2]|0)){Mb(c[a+944>>2]|0);KA(a|0,20,980)|0;l=e;return}else{c[d>>2]=2665;Tb(0,2573,d);Qa()}}function $b(){return c[2326]|0}function ac(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(b)if(!(Wb(a)|0))d=b;else{c[e>>2]=2712;Tb(0,2573,e);Qa()}else d=0;c[a+952>>2]=d;l=f;return}function bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;e=b+940|0;if(c[e>>2]|0){c[f>>2]=2792;Tb(0,2573,f);Qa()}if(!(c[a+952>>2]|0)){Ob(a+944|0,b,d);c[e>>2]=a;Zb(a);l=h;return}else{c[g>>2]=2846;Tb(0,2573,g);Qa()}}function cc(a){a=a|0;return c[a+940>>2]|0}function dc(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(!(c[a+952>>2]|0)){c[b>>2]=2915;Tb(0,2573,b);Qa()}else{Zb(a);l=d;return}}function ec(b){b=b|0;return (a[b+968>>0]|0)!=0|0}function fc(a,b){a=a|0;b=b|0;if(!(Gz(a,b,400)|0))return;KA(a|0,b|0,400)|0;Zb(a);return}function gc(a){a=a|0;var b=fb;b=T(g[a+44>>2]);if(hc(b)|0){b=T(g[a+40>>2]);a=b>T(0.0)&((hc(b)|0)^1);return T(a?b:T(0.0))}else return T(b);return fb}function hc(a){a=T(a);return ((ic(a)|0)&2147483647)>>>0>2139095040|0}function ic(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}function jc(a){a=a|0;var b=fb;b=T(g[a+48>>2]);if(hc(b)|0){b=T(g[a+40>>2]);a=b<T(0.0)&((hc(b)|0)^1);b=T(-b);return T(a?b:T(0.0))}else return T(b);return fb}function kc(a,b){a=a|0;b=b|0;var d=0,e=0;e=lc(b)|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function lc(a){a=a|0;var b=fb;switch(c[a+56>>2]|0){case 0:case 3:{b=T(g[a+40>>2]);a=b>T(0.0)&((hc(b)|0)^1);return (a?1012:1020)|0}default:return a+52|0}return 0}function mc(a,b){a=a|0;b=T(b);var c=0;c=a+40|0;if(!(T(g[c>>2])!=b))return;g[c>>2]=b;Zb(a);return}function nc(a,b){a=a|0;b=b|0;c[a+964>>2]=b;return}function oc(a){a=a|0;return c[a+964>>2]|0}function pc(b,c){b=b|0;c=c|0;a[b+969>>0]=c&1;return}function qc(b){b=b|0;return (a[b+969>>0]|0)!=0|0}function rc(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function sc(a){a=a|0;return c[a+4>>2]|0}function tc(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function uc(a){a=a|0;return c[a+8>>2]|0}function vc(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function wc(a){a=a|0;return c[a+12>>2]|0}function xc(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function yc(a){a=a|0;return c[a+16>>2]|0}function zc(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function Ac(a){a=a|0;return c[a+20>>2]|0}function Bc(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function Cc(a){a=a|0;return c[a+24>>2]|0}function Dc(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function Ec(a){a=a|0;return c[a+28>>2]|0}function Fc(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function Gc(a){a=a|0;return c[a+32>>2]|0}function Hc(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;if((c[d>>2]|0)==(b|0))return;c[d>>2]=b;Zb(a);return}function Ic(a){a=a|0;return c[a+36>>2]|0}function Jc(a,b){a=a|0;b=T(b);var c=0;c=a+44|0;if(!(T(g[c>>2])!=b))return;g[c>>2]=b;Zb(a);return}function Kc(a,b){a=a|0;b=T(b);var c=0;c=a+48|0;if(!(T(g[c>>2])!=b))return;g[c>>2]=b;Zb(a);return}function Lc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+52|0;d=a+56|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function Mc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+52|0;d=a+56|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function Nc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+132+(b<<3)|0;b=a+132+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==1:0)return;g[e>>2]=d;c[b>>2]=((hc(d)|0)^1)&1;Zb(a);return}function Oc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+132+(b<<3)|0;b=a+132+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==2:0)return;g[e>>2]=d;e=hc(d)|0;c[b>>2]=e?0:2;Zb(a);return}function Pc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+132+(d<<3)|0;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function Qc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+60+(b<<3)|0;b=a+60+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==1:0)return;g[e>>2]=d;c[b>>2]=((hc(d)|0)^1)&1;Zb(a);return}function Rc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+60+(b<<3)|0;b=a+60+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==2:0)return;g[e>>2]=d;e=hc(d)|0;c[b>>2]=e?0:2;Zb(a);return}function Sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+60+(d<<3)|0;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function Tc(a,b){a=a|0;b=b|0;var d=0;d=a+60+(b<<3)+4|0;if((c[d>>2]|0)==3)return;g[a+60+(b<<3)>>2]=T(t);c[d>>2]=3;Zb(a);return}function Uc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+204+(b<<3)|0;b=a+204+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==1:0)return;g[e>>2]=d;c[b>>2]=((hc(d)|0)^1)&1;Zb(a);return}function Vc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+204+(b<<3)|0;b=a+204+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==2:0)return;g[e>>2]=d;e=hc(d)|0;c[b>>2]=e?0:2;Zb(a);return}function Wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+204+(d<<3)|0;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function Xc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+276+(b<<3)|0;b=a+276+(b<<3)+4|0;if(!(T(g[e>>2])!=d)?(c[b>>2]|0)==1:0)return;g[e>>2]=d;c[b>>2]=((hc(d)|0)^1)&1;Zb(a);return}function Yc(a,b){a=a|0;b=b|0;return T(g[a+276+(b<<3)>>2])}function Zc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+348|0;d=a+352|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function _c(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+348|0;d=a+352|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function $c(a){a=a|0;var b=0;b=a+352|0;if((c[b>>2]|0)==3)return;g[a+348>>2]=T(t);c[b>>2]=3;Zb(a);return}function ad(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+348|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function bd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+356|0;d=a+360|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function cd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+356|0;d=a+360|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function dd(a){a=a|0;var b=0;b=a+360|0;if((c[b>>2]|0)==3)return;g[a+356>>2]=T(t);c[b>>2]=3;Zb(a);return}function ed(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+356|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function fd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+364|0;d=a+368|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function gd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+364|0;d=a+368|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function hd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+364|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function id(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+372|0;d=a+376|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function jd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+372|0;d=a+376|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function kd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+372|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function ld(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+380|0;d=a+384|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function md(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+380|0;d=a+384|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function nd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+380|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function od(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+388|0;d=a+392|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==1:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:1;Zb(a);return}function pd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+388|0;d=a+392|0;if(!(T(g[e>>2])!=b)?(c[d>>2]|0)==2:0)return;g[e>>2]=b;e=hc(b)|0;c[d>>2]=e?3:2;Zb(a);return}function qd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+388|0;d=c[e+4>>2]|0;b=a;c[b>>2]=c[e>>2];c[b+4>>2]=d;return}function rd(a,b){a=a|0;b=T(b);var c=0;c=a+396|0;if(!(T(g[c>>2])!=b))return;g[c>>2]=b;Zb(a);return}function sd(a){a=a|0;return T(g[a+396>>2])}function td(a){a=a|0;return T(g[a+400>>2])}function ud(a){a=a|0;return T(g[a+404>>2])}function vd(a){a=a|0;return T(g[a+408>>2])}function wd(a){a=a|0;return T(g[a+412>>2])}function xd(a){a=a|0;return T(g[a+416>>2])}function yd(a){a=a|0;return T(g[a+420>>2])}function zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>=6){c[d>>2]=3001;Tb(0,2573,d);Qa()}switch(b|0){case 0:{b=(c[a+496>>2]|0)==2?5:4;break}case 2:{b=(c[a+496>>2]|0)==2?4:5;break}default:{}}f=T(g[a+424+(b<<2)>>2]);l=e;return T(f)}function Ad(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>=6){c[d>>2]=3001;Tb(0,2573,d);Qa()}switch(b|0){case 0:{b=(c[a+496>>2]|0)==2?5:4;break}case 2:{b=(c[a+496>>2]|0)==2?4:5;break}default:{}}f=T(g[a+448+(b<<2)>>2]);l=e;return T(f)}function Bd(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>=6){c[d>>2]=3001;Tb(0,2573,d);Qa()}switch(b|0){case 0:{b=(c[a+496>>2]|0)==2?5:4;break}case 2:{b=(c[a+496>>2]|0)==2?4:5;break}default:{}}f=T(g[a+472+(b<<2)>>2]);l=e;return T(f)}function Cd(a,b){a=a|0;b=b|0;Dd(a,b,0);return}function Dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0;K=l;l=l+400|0;I=K+392|0;J=K+384|0;H=K+376|0;G=K+368|0;F=K+360|0;D=K+352|0;C=K+344|0;B=K+336|0;A=K+328|0;z=K+320|0;y=K+312|0;x=K+304|0;w=K+296|0;v=K+288|0;u=K+280|0;t=K+272|0;s=K+264|0;r=K+256|0;q=K+248|0;p=K+240|0;n=K+232|0;m=K+144|0;j=K+96|0;i=K+48|0;f=K+40|0;E=K+32|0;o=K+24|0;k=K+16|0;Ed(d);Tb(3,3055,K);e=c[a+960>>2]|0;if(e|0)jb[e&127](a);if(b&1|0){Tb(3,3057,K+8|0);h[k>>3]=+T(g[a+416>>2]);Tb(3,3067,k);h[o>>3]=+T(g[a+420>>2]);Tb(3,3079,o);h[E>>3]=+T(g[a+404>>2]);Tb(3,3092,E);h[f>>3]=+T(g[a+400>>2]);Tb(3,3102,f);Q=+T(g[a+424>>2]);P=+T(g[a+428>>2]);O=+T(g[a+432>>2]);N=+T(g[a+436>>2]);M=+T(g[a+440>>2]);L=+T(g[a+444>>2]);h[i>>3]=Q;h[i+8>>3]=P;h[i+16>>3]=O;h[i+24>>3]=N;h[i+32>>3]=M;h[i+40>>3]=L;Tb(3,3111,i);L=+T(g[a+448>>2]);M=+T(g[a+452>>2]);N=+T(g[a+456>>2]);O=+T(g[a+460>>2]);P=+T(g[a+464>>2]);Q=+T(g[a+468>>2]);h[j>>3]=L;h[j+8>>3]=M;h[j+16>>3]=N;h[j+24>>3]=O;h[j+32>>3]=P;h[j+40>>3]=Q;Tb(3,3157,j);Q=+T(g[a+472>>2]);P=+T(g[a+476>>2]);O=+T(g[a+480>>2]);N=+T(g[a+484>>2]);M=+T(g[a+488>>2]);L=+T(g[a+492>>2]);h[m>>3]=Q;h[m+8>>3]=P;h[m+16>>3]=O;h[m+24>>3]=N;h[m+32>>3]=M;h[m+40>>3]=L;Tb(3,3203,m);Tb(3,3250,K+192|0)}if(b&2|0){switch(c[a+4>>2]|0){case 0:{Tb(3,3254,K+200|0);break}case 1:{Tb(3,3280,K+208|0);break}case 2:{Tb(3,3314,K+216|0);break}case 3:{Tb(3,3337,K+224|0);break}default:{}}switch(c[a+8>>2]|0){case 1:{Tb(3,3368,n);break}case 2:{Tb(3,3395,p);break}case 4:{Tb(3,3424,q);break}case 3:{Tb(3,3457,r);break}default:{}}switch(c[a+16>>2]|0){case 2:{Tb(3,3491,s);break}case 3:{Tb(3,3514,t);break}case 4:{Tb(3,3539,u);break}default:{}}switch(c[a+12>>2]|0){case 2:{Tb(3,3563,v);break}case 3:{Tb(3,3588,w);break}case 4:{Tb(3,3615,x);break}default:{}}switch(c[a+20>>2]|0){case 1:{Tb(3,3641,y);break}case 2:{Tb(3,3667,z);break}case 3:{Tb(3,3689,A);break}case 4:{Tb(3,3713,B);break}default:{}}Fd(3736,T(gc(a)));Fd(3745,T(jc(a)));Gd(3756,lc(a)|0);switch(c[a+32>>2]|0){case 1:{Tb(3,3766,C);break}case 0:{Tb(3,3787,D);break}case 2:{Tb(3,3809,F);break}default:{}}e=a+60|0;F=Hd(e)|0;f=Id(e,0,1012)|0;if(F)Jd(3830,f);else{Jd(3837,f);Jd(3848,Id(e,2,1012)|0);Jd(3860,Id(e,1,1012)|0);Jd(3870,Id(e,3,1012)|0);Jd(3883,Id(e,4,1012)|0);Jd(3895,Id(e,5,1012)|0)}f=a+204|0;F=Hd(f)|0;e=Id(f,0,1012)|0;if(F)Jd(3905,e);else{Jd(3913,e);Jd(3925,Id(f,2,1012)|0);Jd(3938,Id(f,1,1012)|0);Jd(3949,Id(f,3,1012)|0);Jd(3963,Id(f,4,1012)|0);Jd(3976,Id(f,5,1012)|0)}e=a+276|0;F=Hd(e)|0;f=Id(e,0,1012)|0;if(F)Jd(3987,f);else{Jd(3999,f);Jd(4015,Id(e,2,1012)|0);Jd(4032,Id(e,1,1012)|0);Jd(4047,Id(e,3,1012)|0);Jd(4065,Id(e,4,1012)|0);Jd(4082,Id(e,5,1012)|0)}Gd(4097,a+348|0);Gd(4103,a+356|0);Gd(4110,a+380|0);Gd(4119,a+388|0);Gd(4129,a+364|0);Gd(4138,a+372|0);if((c[a+24>>2]|0)==1)Tb(3,4148,G);G=a+132|0;Gd(4171,Id(G,0,1e3)|0);Gd(4176,Id(G,2,1e3)|0);Gd(4182,Id(G,1,1e3)|0);Gd(4186,Id(G,3,1e3)|0)}i=Nb(c[a+944>>2]|0)|0;if(!((b&4|0)!=0&(i|0)!=0)){Tb(3,4211,I);l=K;return}Tb(3,4193,H);f=d+1|0;e=0;do{Dd(Xb(a,e)|0,b,f);e=e+1|0}while((e|0)!=(i|0));Ed(d);Tb(3,4206,J);l=K;return}function Ed(a){a=a|0;var b=0,c=0,d=0;d=l;l=l+16|0;c=d;if(!a){l=d;return}else b=0;do{Tb(3,4291,c);b=b+1|0}while((b|0)!=(a|0));l=d;return}function Fd(a,b){a=a|0;b=T(b);var d=0,e=0;e=l;l=l+16|0;d=e;if(hc(b)|0){l=e;return}c[d>>2]=a;h[d+8>>3]=+b;Tb(3,4282,d);l=e;return}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0.0;f=l;l=l+32|0;e=f;d=c[b+4>>2]|0;if(!d){l=f;return}i=+T(g[b>>2]);c[e>>2]=a;h[e+8>>3]=i;c[e+16>>2]=(d|0)==1?4215:4218;Tb(3,4220,e);l=f;return}function Hd(a){a=a|0;var b=0,d=0,e=0,f=0;e=l;l=l+16|0;d=e+8|0;b=e;f=a+8|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];if(!(Ld(b,d)|0)){f=0;l=e;return f|0}f=a+16|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];if(!(Ld(b,d)|0)){f=0;l=e;return f|0}f=a+24|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];f=Ld(b,d)|0;l=e;return f|0}function Id(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(b>>>0>=6){c[e>>2]=4231;Tb(0,2573,e);Qa()}if(c[a+(b<<3)+4>>2]|0){e=a+(b<<3)|0;l=f;return e|0}if((b|2|0)==3?c[a+60>>2]|0:0){e=a+56|0;l=f;return e|0}switch(b|0){case 0:case 2:case 4:case 5:{if(c[a+52>>2]|0){e=a+48|0;l=f;return e|0}break}default:{}}if(!(c[a+68>>2]|0)){e=(b|1|0)==5?1e3:d;l=f;return e|0}else{e=a+64|0;l=f;return e|0}return 0}function Jd(a,b){a=a|0;b=b|0;var d=fb,e=0,f=0;f=l;l=l+32|0;e=f;d=T(g[b>>2]);if(Kd(d,T(0.0))|0){l=f;return}b=(c[b+4>>2]|0)==1?4215:4218;c[e>>2]=a;h[e+8>>3]=+d;c[e+16>>2]=b;Tb(3,4220,e);l=f;return}function Kd(a,b){a=T(a);b=T(b);var c=0;if(hc(a)|0){c=hc(b)|0;return c|0}else{c=T(C(T(a-b)))<T(.0000999999974);return c|0}return 0}function Ld(a,b){a=a|0;b=b|0;var d=0,e=fb;d=c[a+4>>2]|0;if((d|0)!=(c[b+4>>2]|0)){d=0;return d|0}if(!d){d=1;return d|0}e=T(g[a>>2]);d=T(C(T(e-T(g[b>>2]))))<T(.0000999999974);return d|0}function Md(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=T(b);c=c|0;d=T(d);e=e|0;f=T(f);g=g|0;h=T(h);i=T(i);j=T(j);k=T(k);l=T(l);var m=0,n=fb,o=fb,p=0;if(i<T(0.0)|j<T(0.0)){g=0;return g|0}if((e|0)==(a|0))m=Kd(f,b)|0;else m=0;if((g|0)==(c|0))p=Kd(h,d)|0;else p=0;if((!m?(n=T(b-k),!(Nd(a,n,i)|0)):0)?!(Od(a,n,e,i)|0):0)m=Pd(a,n,e,f,i)|0;else m=1;if((!p?(o=T(d-l),!(Nd(c,o,j)|0)):0)?!(Od(c,o,g,j)|0):0)a=Pd(c,o,g,h,j)|0;else a=1;g=m&a;return g|0}function Nd(a,b,c){a=a|0;b=T(b);c=T(c);if((a|0)==1)a=Kd(b,c)|0;else a=0;return a|0}function Od(a,b,c,d){a=a|0;b=T(b);c=c|0;d=T(d);if((a|0)==2&(c|0)==0)if(!(b>=d))a=Kd(b,d)|0;else a=1;else a=0;return a|0}function Pd(a,b,c,d,e){a=a|0;b=T(b);c=c|0;d=T(d);e=T(e);if(!((a|0)==2&(c|0)==2&d>b)){c=0;return c|0}if(e<=b){c=1;return c|0}c=Kd(b,e)|0;return c|0}function Qd(b,d,e,f,i,j,k,m,n,o){b=b|0;d=T(d);e=T(e);f=f|0;i=i|0;j=j|0;k=T(k);m=T(m);n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=fb,u=fb,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=fb,F=fb,G=fb,H=0.0,I=0.0;D=l;l=l+160|0;A=D+120|0;z=D+104|0;x=D+72|0;s=D+56|0;y=D+8|0;w=D;c[2328]=(c[2328]|0)+1;B=b+968|0;if((a[B>>0]|0)!=0?(c[b+508>>2]|0)!=(c[2327]|0):0)v=4;else if((c[b+512>>2]|0)==(f|0))C=0;else v=4;if((v|0)==4){c[b+516>>2]=0;c[b+920>>2]=-1;c[b+924>>2]=-1;g[b+928>>2]=T(-1.0);g[b+932>>2]=T(-1.0);C=1}a:do if(!(c[b+952>>2]|0)){if(n){p=b+912|0;if(!(Kd(T(g[p>>2]),d)|0)){v=21;break}if(!(Kd(T(g[b+916>>2]),e)|0)){v=21;break}if((c[b+920>>2]|0)!=(i|0)){v=21;break}p=(c[b+924>>2]|0)==(j|0)?p:0;v=22;break}r=c[b+516>>2]|0;if(!r)v=21;else{q=0;while(1){p=b+520+(q*24|0)|0;if(((Kd(T(g[p>>2]),d)|0?Kd(T(g[b+520+(q*24|0)+4>>2]),e)|0:0)?(c[b+520+(q*24|0)+8>>2]|0)==(i|0):0)?(c[b+520+(q*24|0)+12>>2]|0)==(j|0):0){v=22;break a}q=q+1|0;if(q>>>0>=r>>>0){v=21;break}}}}else{t=T(Rd(b,2,k));u=T(Rd(b,0,k));p=b+912|0;G=T(g[p>>2]);F=T(g[b+916>>2]);E=T(g[b+928>>2]);if(!(Md(i,d,j,e,c[b+920>>2]|0,G,c[b+924>>2]|0,F,E,T(g[b+932>>2]),t,u)|0)){r=c[b+516>>2]|0;if(!r)v=21;else{q=0;while(1){p=b+520+(q*24|0)|0;E=T(g[p>>2]);F=T(g[b+520+(q*24|0)+4>>2]);G=T(g[b+520+(q*24|0)+16>>2]);if(Md(i,d,j,e,c[b+520+(q*24|0)+8>>2]|0,E,c[b+520+(q*24|0)+12>>2]|0,F,G,T(g[b+520+(q*24|0)+20>>2]),t,u)|0){v=22;break a}q=q+1|0;if(q>>>0>=r>>>0){v=21;break}}}}else v=22}while(0);do if((v|0)==21)if(!(a[11737]|0)){p=0;v=31}else{p=0;v=28}else if((v|0)==22){q=(a[11737]|0)!=0;if(!((p|0)!=0&(C^1)))if(q){v=28;break}else{v=31;break}s=p+16|0;c[b+904>>2]=c[s>>2];r=p+20|0;c[b+908>>2]=c[r>>2];if(!((a[11738]|0)==0|q^1)){q=c[2328]|0;c[w>>2]=Sd(q)|0;c[w+4>>2]=q;pA(4294,w)|0;q=c[b+960>>2]|0;if(q|0)jb[q&127](b);i=Td(i,n)|0;j=Td(j,n)|0;I=+T(g[s>>2]);H=+T(g[r>>2]);c[y>>2]=i;c[y+4>>2]=j;h[y+8>>3]=+d;h[y+16>>3]=+e;h[y+24>>3]=I;h[y+32>>3]=H;c[y+40>>2]=o;pA(4311,y)|0}}while(0);if((v|0)==28){q=c[2328]|0;y=Sd(q)|0;c[s>>2]=y;c[s+4>>2]=q;c[s+8>>2]=C?4360:11739;pA(4362,s)|0;q=c[b+960>>2]|0;if(q|0)jb[q&127](b);y=Td(i,n)|0;v=Td(j,n)|0;c[x>>2]=y;c[x+4>>2]=v;h[x+8>>3]=+d;h[x+16>>3]=+e;c[x+24>>2]=o;pA(4371,x)|0;v=31}if((v|0)==31){Ud(b,d,e,f,i,j,k,m,n);if(a[11737]|0){q=c[2328]|0;y=Sd(q)|0;c[z>>2]=y;c[z+4>>2]=q;c[z+8>>2]=C?4360:11739;pA(4405,z)|0;q=c[b+960>>2]|0;if(q|0)jb[q&127](b);y=Td(i,n)|0;z=Td(j,n)|0;H=+T(g[b+904>>2]);I=+T(g[b+908>>2]);c[A>>2]=y;c[A+4>>2]=z;h[A+8>>3]=H;h[A+16>>3]=I;c[A+24>>2]=o;pA(4414,A)|0}c[b+512>>2]=f;if(!p){q=b+516|0;p=c[q>>2]|0;if((p|0)==16){if(a[11737]|0)qA(4446)|0;c[q>>2]=0;p=0}if(n)p=b+912|0;else{c[q>>2]=p+1;p=b+520+(p*24|0)|0}g[p>>2]=d;g[p+4>>2]=e;c[p+8>>2]=i;c[p+12>>2]=j;c[p+16>>2]=c[b+904>>2];c[p+20>>2]=c[b+908>>2];p=0}}if(!n){B=c[2328]|0;B=B+-1|0;c[2328]=B;B=c[2327]|0;n=b+508|0;c[n>>2]=B;n=(p|0)==0;C=C|n;l=D;return C|0}c[b+416>>2]=c[b+904>>2];c[b+420>>2]=c[b+908>>2];a[b+969>>0]=1;a[B>>0]=0;B=c[2328]|0;B=B+-1|0;c[2328]=B;B=c[2327]|0;n=b+508|0;c[n>>2]=B;n=(p|0)==0;C=C|n;l=D;return C|0}function Rd(a,b,c){a=a|0;b=b|0;c=T(c);var d=fb;d=T(Xd(a,b,c));return T(d+T(Yd(a,b,c)))}function Sd(a){a=a|0;return (a>>>0>60?4834:4834+(60-a)|0)|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f+12|0;e=f;c[d>>2]=c[269];c[d+4>>2]=c[270];c[d+8>>2]=c[271];c[e>>2]=c[272];c[e+4>>2]=c[273];c[e+8>>2]=c[274];if(a>>>0>2){e=11739;l=f;return e|0}e=c[(b?e:d)+(a<<2)>>2]|0;l=f;return e|0}function Ud(b,d,e,f,h,i,k,m,n){b=b|0;d=T(d);e=T(e);f=f|0;h=h|0;i=i|0;k=T(k);m=T(m);n=n|0;var o=0,p=0,q=0,r=0,s=fb,t=fb,u=fb,v=fb,w=fb,x=fb,y=fb,z=0,A=0,B=fb,C=0,D=fb,E=fb,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,U=0,V=0,W=fb,X=0,Y=0,Z=fb,_=fb,$=fb,aa=fb,ba=fb,ca=fb,da=0,ea=0,fa=0,ga=0,ha=fb,ia=fb,ja=fb,ka=0,la=0,ma=fb,na=fb,oa=fb,pa=fb,qa=fb,ra=fb,sa=fb,ta=fb,ua=0,va=0,wa=0,xa=0,ya=fb,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;Ia=l;l=l+32|0;p=Ia+8|0;o=Ia;ka=Ia+24|0;da=Ia+20|0;ea=Ia+16|0;fa=Ia+12|0;if(!((h|0)==0|(hc(d)|0)^1)){c[o>>2]=4468;Tb(0,2573,o);Qa()}if(!((i|0)==0|(hc(e)|0)^1)){c[p>>2]=4548;Tb(0,2573,p);Qa()}Da=Vd(b,f)|0;c[b+496>>2]=Da;Ga=Wd(2,Da)|0;Ha=Wd(0,Da)|0;g[b+440>>2]=T(Xd(b,Ga,k));g[b+444>>2]=T(Yd(b,Ga,k));g[b+428>>2]=T(Xd(b,Ha,k));g[b+436>>2]=T(Yd(b,Ha,k));g[b+464>>2]=T(Zd(b,Ga));g[b+468>>2]=T(_d(b,Ga));g[b+452>>2]=T(Zd(b,Ha));g[b+460>>2]=T(_d(b,Ha));g[b+488>>2]=T($d(b,Ga,k));g[b+492>>2]=T(ae(b,Ga,k));g[b+476>>2]=T($d(b,Ha,k));g[b+484>>2]=T(ae(b,Ha,k));if(c[b+952>>2]|0){be(b,d,e,h,i,k,m);l=Ia;return}Ea=b+944|0;Fa=Nb(c[Ea>>2]|0)|0;if(!Fa){ce(b,d,e,h,i,k,m);l=Ia;return}if(!n?de(b,d,e,h,i,k,m)|0:0){l=Ia;return}Ga=Wd(c[b+4>>2]|0,Da)|0;Ha=ee(Ga,Da)|0;Ca=fe(Ga)|0;X=c[b+8>>2]|0;va=b+28|0;Y=(c[va>>2]|0)!=0;qa=Ca?k:m;sa=Ca?m:k;Z=T(ge(b,Ga,k));_=T(he(b,Ga,k));s=T(ge(b,Ha,k));ra=T(ie(b,Ga,k));ta=T(ie(b,Ha,k));C=Ca?h:i;ua=Ca?i:h;ya=Ca?ra:ta;w=Ca?ta:ra;pa=T(Rd(b,2,k));v=T(Rd(b,0,k));t=T(T(T(je(b+364|0,k))-pa)-ya);u=T(T(T(je(b+380|0,k))-pa)-ya);x=T(T(T(je(b+372|0,m))-v)-w);y=T(T(T(je(b+388|0,m))-v)-w);$=Ca?t:x;aa=Ca?u:y;pa=T(d-pa);d=T(pa-ya);if(hc(d)|0)ya=d;else ya=T(iA(T(kA(d,u)),t));na=T(e-v);d=T(na-w);if(hc(d)|0)oa=d;else oa=T(iA(T(kA(d,y)),x));t=Ca?ya:oa;ma=Ca?oa:ya;a:do if((C|0)==1){f=0;p=0;while(1){o=Xb(b,p)|0;if(!f)if(T(gc(o))>T(0.0)?T(jc(o))>T(0.0):0)f=o;else f=0;else if(ke(o)|0){r=0;break a}p=p+1|0;if(p>>>0>=Fa>>>0){r=f;break}}}else r=0;while(0);z=r+500|0;A=r+504|0;f=0;o=0;d=T(0.0);q=0;do{p=Rb(c[Ea>>2]|0,q)|0;if((c[p+36>>2]|0)==1){le(p);a[p+969>>0]=1;a[p+968>>0]=0}else{me(p);if(n)ne(p,Vd(p,Da)|0,t,ma,ya);do if((c[p+24>>2]|0)!=1)if((p|0)==(r|0)){c[z>>2]=c[2327];g[A>>2]=T(0.0);break}else{oe(b,p,ya,h,oa,ya,oa,i,Da);break}else{if(o|0)c[o+948>>2]=p;c[p+948>>2]=0;o=p;f=(f|0)==0?p:f}while(0);d=T(d+T(g[p+504>>2]))}q=q+1|0}while((q|0)!=(Fa|0));G=d>t;la=Y&((C|0)==2&G)?1:C;F=(ua|0)==1;I=F&(n^1);J=(la|0)==2;K=1028+(Ga<<2)|0;L=(ua|2|0)==2;M=(ua|0)==2;V=F&(Y^1);N=1044+(Ha<<2)|0;O=1044+(Ha<<2)|0;P=1060+(Ha<<2)|0;Q=1028+(Ha<<2)|0;R=1044+(Ga<<2)|0;S=1044+(Ga<<2)|0;U=1060+(Ga<<2)|0;G=Y&((C|0)!=0&G);F=F^1;w=t;r=0;H=0;ca=T(0.0);ba=T(0.0);while(1){b:do if(r>>>0<Fa>>>0){q=0;v=T(0.0);t=T(0.0);d=T(0.0);A=0;p=0;i=r;while(1){z=Rb(c[Ea>>2]|0,i)|0;if((c[z+36>>2]|0)!=1?(c[z+936>>2]=H,(c[z+24>>2]|0)!=1):0){u=T(je(z+364+(c[K>>2]<<3)|0,qa));o=z+504|0;u=T(iA(u,T(g[o>>2])));u=T(v+T(u+T(Rd(z,Ga,ya))));if(Y&(q|0)!=0&u>w){C=q;u=v;D=t;o=A;break b}if(ke(z)|0){t=T(t+T(gc(z)));W=T(jc(z));d=T(d-T(W*T(g[o>>2])))}if(p|0)c[p+948>>2]=z;c[z+948>>2]=0;q=q+1|0;p=z;o=(A|0)==0?z:A}else{u=v;o=A}z=i+1|0;if(z>>>0<Fa>>>0){v=u;A=o;i=z}else{C=q;D=t;i=z;break}}}else{C=0;u=T(0.0);D=T(0.0);d=T(0.0);o=0;i=r}while(0);if(hc(w)|0)if(u<$&((hc($)|0)^1))W=$;else{A=u>aa&((hc(aa)|0)^1);W=A?aa:w}else W=w;if(hc(W)|0)if(u<T(0.0))E=T(-u);else E=T(0.0);else E=T(W-u);if(!I?(ga=(o|0)==0,!ga):0){q=E<T(0.0);e=T(E/d);z=E>T(0.0);B=T(E/D);x=T(0.0);y=T(0.0);t=T(0.0);p=o;while(1){v=T(g[p+504>>2]);do if(q){w=T(v*T(jc(p)));if(w!=T(-0.0)?(u=T(v-T(e*w)),ha=T(pe(p,Ga,u,W,ya)),u!=ha):0){u=T(x-T(ha-v));t=T(t+w)}else u=x}else if(z?(ia=T(gc(p)),ia!=T(0.0)):0){w=T(v+T(B*ia));u=T(pe(p,Ga,w,W,ya));if(!(w!=u)){u=x;break}u=T(x-T(u-v));y=T(y-ia)}else u=x;while(0);p=c[p+948>>2]|0;if(!p)break;else x=u}d=T(d+t);t=T(E+u);if(!ga){z=t<T(0.0);A=d==T(0.0);e=T(t/d);q=t>T(0.0);x=T(t/T(D+y));d=T(0.0);p=o;do{u=T(g[p+504>>2]);do if(z){D=T(u*T(jc(p)));t=T(-D);if(D!=T(-0.0)){D=T(e*t);t=T(pe(p,Ga,T(u+(A?t:D)),W,ya))}else t=u}else if(q){t=T(gc(p));if(!(t!=T(0.0))){t=u;break}t=T(pe(p,Ga,T(u+T(x*t)),W,ya))}else t=u;while(0);d=T(d-T(t-u));v=T(Rd(p,Ga,ya));w=T(Rd(p,Ha,ya));u=T(t+v);g[da>>2]=u;c[fa>>2]=1;o=hc(ma)|0;do if(o)Ba=78;else{if(G|(qe(p,Ha,ma)|0|F)){Ba=78;break}if((re(b,p)|0)!=4){Ba=78;break}g[ka>>2]=ma;c[ea>>2]=1}while(0);do if((Ba|0)==78){Ba=0;if(qe(p,Ha,ma)|0){D=T(w+T(je(c[p+972+(c[Q>>2]<<2)>>2]|0,ma)));g[ka>>2]=D;c[ea>>2]=((hc(D)|0)^1)&1;break}else{g[ka>>2]=ma;c[ea>>2]=o?0:2;break}}while(0);o=p+396|0;t=T(g[o>>2]);if(!(hc(t)|0)){B=T(u-v);D=T(B/t);t=T(t*B);t=T(iA(Ca?D:t,T(ie(p,Ha,ya))));g[ka>>2]=t;c[ea>>2]=1;if(ke(p)|0){t=T(kA(T(t-w),ma));g[ka>>2]=t;u=T(g[o>>2]);if(Ca)u=T(t*u);else u=T(t/u);g[da>>2]=T(v+u)}g[ka>>2]=T(w+t)}se(T(je(p+380+(c[K>>2]<<3)|0,ya)),fa,da);se(T(je(p+380+(c[Q>>2]<<3)|0,oa)),ea,ka);if(qe(p,Ha,ma)|0)o=0;else o=(re(b,p)|0)==4;D=T(g[da>>2]);B=T(g[ka>>2]);Ja=c[fa>>2]|0;Ka=c[ea>>2]|0;Qd(p,Ca?D:B,Ca?B:D,Da,Ca?Ja:Ka,Ca?Ka:Ja,ya,oa,n&(o^1),4630)|0;p=c[p+948>>2]|0}while((p|0)!=0)}else d=T(0.0)}else d=T(0.0);d=T(E+d);if(J&d>T(0.0)){o=c[K>>2]|0;if((c[b+364+(o<<3)+4>>2]|0)!=0?(ja=T(je(b+364+(o<<3)|0,qa)),ja>=T(0.0)):0)t=T(iA(T(0.0),T(ja-T(W-d))));else t=T(0.0)}else t=d;A=r>>>0<i>>>0;if(A){q=r;o=0;do{p=Rb(c[Ea>>2]|0,q)|0;if(!(c[p+24>>2]|0))o=((c[p+60+(c[S>>2]<<3)+4>>2]|0)==3&1)+o+((c[p+60+(c[U>>2]<<3)+4>>2]|0)==3&1)|0;q=q+1|0}while((q|0)!=(i|0));if(o){v=T(0.0);w=T(0.0)}else Ba=100}else Ba=100;c:do if((Ba|0)==100){Ba=0;switch(X|0){case 1:{o=0;v=T(t*T(.5));w=T(0.0);break c}case 2:{o=0;v=t;w=T(0.0);break c}case 3:{if(C>>>0<=1){o=0;v=T(0.0);w=T(0.0);break c}w=T((C+-1|0)>>>0);o=0;v=T(0.0);w=T(T(iA(t,T(0.0)))/w);break c}case 4:{w=T(t/T(C>>>0));o=0;v=T(w*T(.5));break c}default:{o=0;v=T(0.0);w=T(0.0);break c}}}while(0);d=T(Z+v);if(A){u=T(t/T(o|0));z=r;t=T(0.0);do{q=Rb(c[Ea>>2]|0,z)|0;d:do if((c[q+36>>2]|0)!=1){p=q+24|0;o=c[p>>2]|0;do if((o|0)==1){if(!(te(q,Ga)|0)){o=c[p>>2]|0;break}if(!n)break d;E=T(ue(q,Ga,W));E=T(E+T(Zd(b,Ga)));E=T(E+T(Xd(q,Ga,ya)));g[q+400+(c[R>>2]<<2)>>2]=E;break d}while(0);if(o|0){if(!n)break;E=T(v+T(Zd(b,Ga)));Ka=q+400+(c[R>>2]<<2)|0;g[Ka>>2]=T(E+T(g[Ka>>2]));break}E=T(u+d);d=(c[q+60+(c[S>>2]<<3)+4>>2]|0)==3?E:d;if(n){Ka=q+400+(c[R>>2]<<2)|0;g[Ka>>2]=T(d+T(g[Ka>>2]))}E=T(u+d);d=(c[q+60+(c[U>>2]<<3)+4>>2]|0)==3?E:d;if(I){E=T(w+T(Rd(q,Ga,ya)));t=ma;d=T(d+T(E+T(g[q+504>>2])));break}else{d=T(d+T(w+T(ve(q,Ga,ya))));t=T(iA(t,T(ve(q,Ha,ya))));break}}while(0);z=z+1|0}while((z|0)!=(i|0))}else t=T(0.0);w=T(_+d);if(L){d=T(T(pe(b,Ha,T(ta+t),sa,k))-ta);if(M)d=T(kA(d,ma))}else d=ma;v=T(T(pe(b,Ha,T(ta+(V?ma:t)),sa,k))-ta);if(A&n)do{z=Rb(c[Ea>>2]|0,r)|0;do if((c[z+36>>2]|0)!=1){if((c[z+24>>2]|0)==1){if(te(z,Ha)|0){t=T(ue(z,Ha,ma));t=T(t+T(Zd(b,Ha)))}else t=T(Zd(b,Ha));E=T(t+T(Xd(z,Ha,ya)));g[z+400+(c[N>>2]<<2)>>2]=E;break}q=re(b,z)|0;o=c[O>>2]|0;do if((q|0)==4){if((c[z+60+(o<<3)+4>>2]|0)==3){Ba=140;break}if((c[z+60+(c[P>>2]<<3)+4>>2]|0)==3){Ba=140;break}if(qe(z,Ha,ma)|0){t=s;break}p=c[K>>2]|0;Ja=c[z+904+(p<<2)>>2]|0;c[ka>>2]=Ja;o=z+396|0;Ka=hc(T(g[o>>2]))|0;u=(c[j>>2]=Ja,T(g[j>>2]));if(Ka)t=v;else{D=T(Rd(z,Ha,ya));t=T(g[o>>2]);E=T(u/t);t=T(u*t);t=T(D+(Ca?E:t))}g[da>>2]=t;g[ka>>2]=T(T(Rd(z,Ga,ya))+u);c[ea>>2]=1;c[fa>>2]=1;se(T(je(z+380+(p<<3)|0,W)),ea,ka);se(T(je(z+380+(c[Q>>2]<<3)|0,ma)),fa,da);t=T(g[ka>>2]);D=T(g[da>>2]);E=Ca?t:D;t=Ca?D:t;Ka=((hc(E)|0)^1)&1;Qd(z,E,t,Da,Ka,((hc(t)|0)^1)&1,ya,oa,1,4635)|0;t=s}else Ba=140;while(0);e:do if((Ba|0)==140){Ba=0;t=T(d-T(ve(z,Ha,ya)));o=(c[z+60+(o<<3)+4>>2]|0)==3;p=(c[z+60+(c[P>>2]<<3)+4>>2]|0)==3;if(o&p){t=T(s+T(t*T(.5)));break}if(p){t=s;break}if(o){t=T(s+t);break}switch(q|0){case 1:{t=s;break e}case 2:{t=T(s+T(t*T(.5)));break e}default:{t=T(s+t);break e}}}while(0);E=T(ca+t);Ka=z+400+(c[N>>2]<<2)|0;g[Ka>>2]=T(E+T(g[Ka>>2]))}while(0);r=r+1|0}while((r|0)!=(i|0));ca=T(ca+v);ba=T(iA(ba,w));C=H+1|0;if(i>>>0>=Fa>>>0)break;else{w=W;r=i;H=C}}do if(n){o=C>>>0>1;if((!o?(c[b+12>>2]|0)!=4:0)?!(we(b)|0):0)break;if(!(hc(ma)|0)){d=T(ma-ca);f:do switch(c[b+12>>2]|0){case 3:{s=T(s+d);x=T(0.0);break}case 2:{s=T(s+T(d*T(.5)));x=T(0.0);break}case 4:{if(ma>ca)x=T(d/T(C>>>0));else x=T(0.0);break}case 7:if(ma>ca){s=T(s+T(d/T(C<<1>>>0)));x=T(d/T(C>>>0));x=o?x:T(0.0);break f}else{s=T(s+T(d*T(.5)));x=T(0.0);break f}case 6:{x=T(d/T(H>>>0));x=ma>ca&o?x:T(0.0);break}default:x=T(0.0)}while(0);if(C|0){A=1044+(Ha<<2)|0;i=1028+(Ha<<2)|0;z=0;p=0;while(1){g:do if(p>>>0<Fa>>>0){t=T(0.0);u=T(0.0);d=T(0.0);r=p;while(1){o=Rb(c[Ea>>2]|0,r)|0;do if((c[o+36>>2]|0)!=1?(c[o+24>>2]|0)==0:0){if((c[o+936>>2]|0)!=(z|0))break g;if(xe(o,Ha)|0){ja=T(g[o+904+(c[i>>2]<<2)>>2]);d=T(iA(d,T(ja+T(Rd(o,Ha,ya)))))}if((re(b,o)|0)!=5)break;ia=T(ye(o));ia=T(ia+T(Xd(o,0,ya)));ja=T(g[o+908>>2]);ja=T(T(ja+T(Rd(o,0,ya)))-ia);ia=T(iA(u,ia));ja=T(iA(t,ja));t=ja;u=ia;d=T(iA(d,T(ia+ja)))}while(0);o=r+1|0;if(o>>>0<Fa>>>0)r=o;else{r=o;break}}}else{u=T(0.0);d=T(0.0);r=p}while(0);w=T(x+d);v=s;s=T(s+w);if(p>>>0<r>>>0){u=T(v+u);o=p;do{q=Rb(c[Ea>>2]|0,o)|0;h:do if((c[q+36>>2]|0)!=1){if(c[q+24>>2]|0)break;switch(re(b,q)|0){case 1:{ja=T(v+T(Xd(q,Ha,ya)));g[q+400+(c[A>>2]<<2)>>2]=ja;break h}case 3:{ja=T(T(s-T(Yd(q,Ha,ya)))-T(g[q+904+(c[i>>2]<<2)>>2]));g[q+400+(c[A>>2]<<2)>>2]=ja;break h}case 2:{ja=T(v+T(T(w-T(g[q+904+(c[i>>2]<<2)>>2]))*T(.5)));g[q+400+(c[A>>2]<<2)>>2]=ja;break h}case 4:{ja=T(v+T(Xd(q,Ha,ya)));g[q+400+(c[A>>2]<<2)>>2]=ja;if(qe(q,Ha,ma)|0)break h;if(Ca){p=q+904|0;d=T(g[p>>2]);d=T(d+T(Rd(q,Ha,ya)));t=w}else{t=T(g[q+908>>2]);p=q+904|0;d=w;t=T(t+T(Rd(q,Ha,ya)))}if(Kd(d,T(g[p>>2]))|0?Kd(t,T(g[q+908>>2]))|0:0)break h;Qd(q,d,t,Da,1,1,ya,oa,1,4635)|0;break h}case 5:{g[q+404>>2]=T(T(u-T(ye(q)))+T(ue(q,0,ma)));break h}default:break h}}while(0);o=o+1|0}while((o|0)!=(r|0))}z=z+1|0;if((z|0)==(C|0))break;else p=r}}}}while(0);g[b+904>>2]=T(pe(b,2,pa,k,k));g[b+908>>2]=T(pe(b,0,na,m,k));if((la|0)!=0?(wa=c[b+32>>2]|0,xa=(la|0)==2,!(xa&(wa|0)!=2)):0){if(xa&(wa|0)==2){d=T(ra+W);d=T(iA(T(kA(d,T(ze(b,Ga,ba,qa)))),ra));Ba=199}}else{d=T(pe(b,Ga,ba,qa,k));Ba=199}if((Ba|0)==199)g[b+904+(c[1028+(Ga<<2)>>2]<<2)>>2]=d;if((ua|0)!=0?(za=c[b+32>>2]|0,Aa=(ua|0)==2,!(Aa&(za|0)!=2)):0){if(Aa&(za|0)==2){d=T(ta+ma);d=T(iA(T(kA(d,T(ze(b,Ha,T(ta+ca),sa)))),ta));Ba=205}}else{d=T(pe(b,Ha,T(ta+ca),sa,k));Ba=205}if((Ba|0)==205)g[b+904+(c[1028+(Ha<<2)>>2]<<2)>>2]=d;if(!n){l=Ia;return}if((c[va>>2]|0)==2){p=1028+(Ha<<2)|0;q=1044+(Ha<<2)|0;o=0;do{r=Xb(b,o)|0;if(!(c[r+24>>2]|0)){Ja=c[p>>2]|0;k=T(g[b+904+(Ja<<2)>>2]);Ka=r+400+(c[q>>2]<<2)|0;k=T(k-T(g[Ka>>2]));g[Ka>>2]=T(k-T(g[r+904+(Ja<<2)>>2]))}o=o+1|0}while((o|0)!=(Fa|0))}if(f|0){o=Ca?la:h;do{Ae(b,f,ya,o,oa,Da);f=c[f+948>>2]|0}while((f|0)!=0)}o=(Ga|2|0)==3;p=(Ha|2|0)==3;if(o|p)f=0;else{l=Ia;return}do{q=Rb(c[Ea>>2]|0,f)|0;if((c[q+36>>2]|0)!=1){if(o)Be(b,q,Ga);if(p)Be(b,q,Ha)}f=f+1|0}while((f|0)!=(Fa|0));l=Ia;return}function Vd(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return ((a|0)==0?(b|0?b:1):a)|0}function Wd(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)==2){switch(a|0){case 2:{a=3;break a}case 3:break;default:{c=4;break a}}a=2}else c=4;while(0);return a|0}function Xd(a,b,d){a=a|0;b=b|0;d=T(d);if(fe(b)|0?(c[a+96>>2]|0)!=0:0)a=a+92|0;else a=Id(a+60|0,c[1044+(b<<2)>>2]|0,1012)|0;return T(He(a,d))}function Yd(a,b,d){a=a|0;b=b|0;d=T(d);if(fe(b)|0?(c[a+104>>2]|0)!=0:0)a=a+100|0;else a=Id(a+60|0,c[1060+(b<<2)>>2]|0,1012)|0;return T(He(a,d))}function Zd(a,b){a=a|0;b=b|0;var d=fb;if((fe(b)|0?c[a+312>>2]|0:0)?(d=T(g[a+308>>2]),d>=T(0.0)):0)return T(d);d=T(iA(T(g[(Id(a+276|0,c[1044+(b<<2)>>2]|0,1012)|0)>>2]),T(0.0)));return T(d)}function _d(a,b){a=a|0;b=b|0;var d=fb;if((fe(b)|0?c[a+320>>2]|0:0)?(d=T(g[a+316>>2]),d>=T(0.0)):0)return T(d);d=T(iA(T(g[(Id(a+276|0,c[1060+(b<<2)>>2]|0,1012)|0)>>2]),T(0.0)));return T(d)}function $d(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;if((fe(b)|0?c[a+240>>2]|0:0)?(e=T(je(a+236|0,d)),e>=T(0.0)):0)return T(e);e=T(iA(T(je(Id(a+204|0,c[1044+(b<<2)>>2]|0,1012)|0,d)),T(0.0)));return T(e)}function ae(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;if((fe(b)|0?c[a+248>>2]|0:0)?(e=T(je(a+244|0,d)),e>=T(0.0)):0)return T(e);e=T(iA(T(je(Id(a+204|0,c[1060+(b<<2)>>2]|0,1012)|0,d)),T(0.0)));return T(e)}function be(a,b,d,e,f,h,i){a=a|0;b=T(b);d=T(d);e=e|0;f=f|0;h=T(h);i=T(i);var j=0,k=fb,m=fb,n=fb,o=fb,p=fb,q=fb,r=0,s=0,t=0;t=l;l=l+16|0;j=t;r=t+8|0;s=a+952|0;if(!(c[s>>2]|0)){c[j>>2]=4724;Tb(0,2573,j);Qa()}k=T(ie(a,2,b));m=T(ie(a,0,b));n=T(Rd(a,2,b));n=T(b-n);o=T(n-k);p=T(d-T(Rd(a,0,b)));q=T(p-m);if((e|0)==1&(f|0)==1){g[a+904>>2]=T(pe(a,2,n,h,h));g[a+908>>2]=T(pe(a,0,p,i,h));l=t;return}if(o<=T(0.0)|q<=T(0.0)){g[a+904>>2]=T(pe(a,2,T(0.0),b,b));g[a+908>>2]=T(pe(a,0,T(0.0),d,b));l=t;return}else{yb[c[s>>2]&1](r,a,o,e,q,f);i=T(k+T(g[r>>2]));g[a+904>>2]=T(pe(a,2,(e|2|0)==2?i:n,b,b));i=T(m+T(g[r+4>>2]));g[a+908>>2]=T(pe(a,0,(f|2|0)==2?i:p,d,b));l=t;return}}function ce(a,b,c,d,e,f,h){a=a|0;b=T(b);c=T(c);d=d|0;e=e|0;f=T(f);h=T(h);var i=fb,j=fb,k=fb,l=fb;k=T(ie(a,2,f));i=T(ie(a,0,f));l=T(Rd(a,2,f));j=T(Rd(a,0,f));b=T(b-l);g[a+904>>2]=T(pe(a,2,(d|2|0)==2?k:b,f,f));c=T(c-j);g[a+908>>2]=T(pe(a,0,(e|2|0)==2?i:c,h,f));return}function de(a,b,c,d,e,f,h){a=a|0;b=T(b);c=T(c);d=d|0;e=e|0;f=T(f);h=T(h);var i=0,j=fb,k=fb;i=(d|0)==2;if((!(b<=T(0.0)&i)?!(c<=T(0.0)&(e|0)==2):0)?!((d|0)==1&(e|0)==1):0){i=0;return i|0}j=T(Rd(a,0,f));k=T(Rd(a,2,f));i=b<T(0.0)&i|(hc(b)|0);b=T(b-k);g[a+904>>2]=T(pe(a,2,i?T(0.0):b,f,f));b=T(c-j);i=c<T(0.0)&(e|0)==2|(hc(c)|0);g[a+908>>2]=T(pe(a,0,i?T(0.0):b,h,f));i=1;return i|0}function ee(a,b){a=a|0;b=b|0;if(!(Ee(a)|0)){b=0;return b|0}b=Wd(2,b)|0;return b|0}function fe(a){a=a|0;return (a|1|0)==3|0}function ge(a,b,c){a=a|0;b=b|0;c=T(c);c=T($d(a,b,c));return T(c+T(Zd(a,b)))}function he(a,b,c){a=a|0;b=b|0;c=T(c);c=T(ae(a,b,c));return T(c+T(_d(a,b)))}function ie(a,b,c){a=a|0;b=b|0;c=T(c);var d=fb;d=T(ge(a,b,c));return T(d+T(he(a,b,c)))}function je(a,b){a=a|0;b=T(b);switch(c[a+4>>2]|0){case 2:{b=T(T(T(g[a>>2])*b)/T(100.0));break}case 1:{b=T(g[a>>2]);break}default:b=T(t)}return T(b)}function ke(a){a=a|0;if(c[a+24>>2]|0){a=0;return a|0}if(T(gc(a))!=T(0.0)){a=1;return a|0}a=T(jc(a))!=T(0.0);return a|0}function le(b){b=b|0;var d=0,e=0;HA(b+400|0,0,536)|0;a[b+969>>0]=1;e=Wb(b)|0;if(!e)return;d=b+944|0;b=0;do{le(Rb(c[d>>2]|0,b)|0);b=b+1|0}while((b|0)!=(e|0));return}function me(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f+8|0;d=f;b=a+380|0;if(!((c[a+384>>2]|0)!=0?(g=a+364|0,c[d>>2]=c[b>>2],c[d+4>>2]=c[b+4>>2],c[e>>2]=c[g>>2],c[e+4>>2]=c[g+4>>2],Ld(d,e)|0):0))b=a+348|0;c[a+972>>2]=b;b=a+388|0;if(c[a+392>>2]|0?(g=a+372|0,c[d>>2]=c[b>>2],c[d+4>>2]=c[b+4>>2],c[e>>2]=c[g>>2],c[e+4>>2]=c[g+4>>2],Ld(d,e)|0):0){e=b;g=a+976|0;c[g>>2]=e;l=f;return}e=a+356|0;g=a+976|0;c[g>>2]=e;l=f;return}function ne(a,b,d,e,f){a=a|0;b=b|0;d=T(d);e=T(e);f=T(f);var h=0,i=fb;h=Wd(c[a+4>>2]|0,b)|0;b=ee(h,b)|0;d=T(Ge(a,h,d));e=T(Ge(a,b,e));i=T(d+T(Xd(a,h,f)));g[a+400+(c[1044+(h<<2)>>2]<<2)>>2]=i;d=T(d+T(Yd(a,h,f)));g[a+400+(c[1060+(h<<2)>>2]<<2)>>2]=d;d=T(e+T(Xd(a,b,f)));g[a+400+(c[1044+(b<<2)>>2]<<2)>>2]=d;f=T(e+T(Yd(a,b,f)));g[a+400+(c[1060+(b<<2)>>2]<<2)>>2]=f;return}function oe(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=T(d);e=e|0;f=T(f);h=T(h);i=T(i);j=j|0;k=k|0;var m=fb,n=0,o=fb,p=0,q=fb,r=0,s=0,u=0,v=0,w=fb,x=fb,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=l;l=l+16|0;C=E+12|0;y=E+8|0;z=E+4|0;A=E;D=Wd(c[a+4>>2]|0,k)|0;B=fe(D)|0;m=T(je(lc(b)|0,B?h:i));n=qe(b,2,h)|0;r=qe(b,0,i)|0;do if(!(hc(m)|0)?!(hc(B?d:f)|0):0){n=b+504|0;if(!(hc(T(g[n>>2]))|0)){if(!(Fe(1)|0))break;if((c[b+500>>2]|0)==(c[2327]|0))break}g[n>>2]=T(iA(m,T(ie(b,D,h))))}else p=7;while(0);do if((p|0)==7){v=B^1;s=n^1;if(!(v|s)){i=T(je(c[b+972>>2]|0,h));g[b+504>>2]=T(iA(i,T(ie(b,2,h))));break}u=r^1;if(!(B|u)){i=T(je(c[b+976>>2]|0,i));g[b+504>>2]=T(iA(i,T(ie(b,0,h))));break}g[C>>2]=T(t);g[y>>2]=T(t);c[z>>2]=0;c[A>>2]=0;w=T(Rd(b,2,h));x=T(Rd(b,0,h));if(n){q=T(w+T(je(c[b+972>>2]|0,h)));g[C>>2]=q;c[z>>2]=1;p=1}else{p=0;q=T(t)}if(r){o=T(x+T(je(c[b+976>>2]|0,i)));g[y>>2]=o;c[A>>2]=1;n=1}else{n=0;o=T(t)}r=c[a+32>>2]|0;if(!(B&(r|0)==2)){if(hc(q)|0?!(hc(d)|0):0){g[C>>2]=d;c[z>>2]=2;q=d;p=2}}else r=2;if((!((r|0)==2&v)?hc(o)|0:0)?!(hc(f)|0):0){g[y>>2]=f;c[A>>2]=2;o=f;n=2}if(B){if((j|0)==1&u&((hc(f)|0)^1)?(re(a,b)|0)==4:0){g[y>>2]=f;c[A>>2]=1;n=1;o=f}}else if((e|0)==1&s&((hc(d)|0)^1)?(re(a,b)|0)==4:0){g[C>>2]=d;c[z>>2]=1;p=1;q=d}m=T(g[b+396>>2]);do if(!(hc(m)|0)){if((p|0)==1&v){n=0;m=T(T(q-w)/m)}else{if(!(B&(n|0)==1))break;n=2;m=T(m*T(o-x))}g[b+504>>2]=T(iA(m,T(ie(b,n,h))));l=E;return}while(0);se(T(je(b+380|0,h)),z,C);se(T(je(b+388|0,i)),A,y);w=T(g[C>>2]);x=T(g[y>>2]);Qd(b,w,x,k,c[z>>2]|0,c[A>>2]|0,h,i,0,4716)|0;i=T(g[b+904+(c[1028+(D<<2)>>2]<<2)>>2]);g[b+504>>2]=T(iA(i,T(ie(b,D,h))))}while(0);c[b+500>>2]=c[2327];l=E;return}function pe(a,b,c,d,e){a=a|0;b=b|0;c=T(c);d=T(d);e=T(e);d=T(ze(a,b,c,d));return T(iA(d,T(ie(a,b,e))))}function qe(a,b,d){a=a|0;b=b|0;d=T(d);a=c[a+972+(c[1028+(b<<2)>>2]<<2)>>2]|0;switch(c[a+4>>2]|0){case 1:{if(T(g[a>>2])<T(0.0)){b=0;return b|0}break}case 2:{if(T(g[a>>2])<T(0.0)){b=0;return b|0}b=(hc(d)|0)^1;return b|0}case 0:case 3:{b=0;return b|0}default:{}}b=1;return b|0}function re(a,b){a=a|0;b=b|0;b=b+20|0;b=c[((c[b>>2]|0)==0?a+16|0:b)>>2]|0;if((b|0)==5?Ee(c[a+4>>2]|0)|0:0){a=1;return a|0}a=b;return a|0}function se(a,b,d){a=T(a);b=b|0;d=d|0;var e=fb;switch(c[b>>2]|0){case 2:case 1:{b=hc(a)|0;e=T(g[d>>2]);g[d>>2]=b|e<a?e:a;return}case 0:{if(hc(a)|0)return;c[b>>2]=2;g[d>>2]=a;return}default:return}}function te(a,b){a=a|0;b=b|0;a=a+132|0;if(fe(b)|0?c[(Id(a,4,1e3)|0)+4>>2]|0:0){b=1;return b|0}b=(c[(Id(a,c[1044+(b<<2)>>2]|0,1e3)|0)+4>>2]|0)!=0;return b|0}function ue(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;a=a+132|0;if(!(fe(b)|0?(e=Id(a,4,1e3)|0,(c[e+4>>2]|0)!=0):0)){e=Id(a,c[1044+(b<<2)>>2]|0,1e3)|0;if(!(c[e+4>>2]|0)){d=T(0.0);return T(d)}}d=T(je(e,d));return T(d)}function ve(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;e=T(g[a+904+(c[1028+(b<<2)>>2]<<2)>>2]);e=T(e+T(Xd(a,b,d)));return T(e+T(Yd(a,b,d)))}function we(a){a=a|0;var b=0,d=0,e=0;if(Ee(c[a+4>>2]|0)|0){d=0;return d|0}if((c[a+16>>2]|0)==5){d=1;return d|0}d=Wb(a)|0;if(!d){d=0;return d|0}else b=0;while(1){e=Xb(a,b)|0;if((c[e+24>>2]|0)==0?(c[e+20>>2]|0)==5:0){b=1;a=7;break}b=b+1|0;if(b>>>0>=d>>>0){b=0;a=7;break}}if((a|0)==7)return b|0;return 0}function xe(a,b){a=a|0;b=b|0;var d=fb;d=T(g[a+904+(c[1028+(b<<2)>>2]<<2)>>2]);return d>=T(0.0)&((hc(d)|0)^1)|0}function ye(a){a=a|0;var b=0,d=fb,e=0,f=0,h=0,i=0,j=0,k=fb,m=0;j=l;l=l+16|0;e=j;b=c[a+956>>2]|0;if(b|0){k=T(g[a+904>>2]);d=T(g[a+908>>2]);d=T(ib[b&0](a,k,d));if(hc(d)|0){c[e>>2]=4666;Tb(0,2573,e);Qa()}else{k=d;l=j;return T(k)}}h=Wb(a)|0;if(h|0){e=0;f=0;while(1){b=Xb(a,f)|0;if(c[b+936>>2]|0){b=e;break}if((c[b+24>>2]|0)!=1){m=(re(a,b)|0)==5;if(m){i=11;break}else b=(e|0)==0?b:e}else b=e;f=f+1|0;if(f>>>0>=h>>>0)break;else e=b}if((i|0)==11){d=T(ye(b));m=b+404|0;k=T(g[m>>2]);k=T(d+k);l=j;return T(k)}if(b|0){m=b;d=T(ye(m));m=m+404|0;k=T(g[m>>2]);k=T(d+k);l=j;return T(k)}}k=T(g[a+908>>2]);l=j;return T(k)}function ze(a,b,c,d){a=a|0;b=b|0;c=T(c);d=T(d);var e=fb,f=0;if(!(Ee(b)|0))if(fe(b)|0){b=0;f=3}else{d=T(t);e=T(t)}else{b=1;f=3}if((f|0)==3){e=T(je(a+364+(b<<3)|0,d));d=T(je(a+380+(b<<3)|0,d))}f=d<c&(d>=T(0.0)&((hc(d)|0)^1));c=f?d:c;f=e>=T(0.0)&((hc(e)|0)^1)&c<e;return T(f?e:c)}function Ae(a,b,d,e,f,h){a=a|0;b=b|0;d=T(d);e=e|0;f=T(f);h=h|0;var i=fb,j=0,k=0,l=fb,m=fb,n=fb,o=0,p=0,q=0,r=0,s=fb,u=fb,v=0;p=Wd(c[a+4>>2]|0,h)|0;q=ee(p,h)|0;o=fe(p)|0;l=T(Rd(b,2,d));n=T(Rd(b,0,d));if(!(qe(b,2,d)|0))if(te(b,2)|0?Ce(b,2)|0:0){i=T(g[a+904>>2]);s=T(Zd(a,2));s=T(i-T(s+T(_d(a,2))));i=T(ue(b,2,d));i=T(pe(b,2,T(s-T(i+T(De(b,2,d)))),d,d))}else i=T(t);else i=T(l+T(je(c[b+972>>2]|0,d)));if(!(qe(b,0,f)|0))if(te(b,0)|0?Ce(b,0)|0:0){s=T(g[a+908>>2]);u=T(Zd(a,0));u=T(s-T(u+T(_d(a,0))));s=T(ue(b,0,f));f=T(pe(b,0,T(u-T(s+T(De(b,0,f)))),f,d))}else f=T(t);else f=T(n+T(je(c[b+976>>2]|0,f)));j=hc(i)|0;k=hc(f)|0;do if(j^k?(m=T(g[b+396>>2]),!(hc(m)|0)):0){if(j){i=T(T(f-n)*m);i=T(l+T(iA(i,T(ie(b,0,d)))));break}if(k){f=T(T(i-l)/m);f=T(n+T(iA(f,T(ie(b,2,d)))))}}while(0);k=hc(i)|0;j=hc(f)|0;if(k|j){v=(k^1)&1;e=d>T(0.0)&((e|0)!=0&k);i=o?i:e?d:i;Qd(b,i,f,h,o?v:e?2:v,k&(j^1)&1,i,f,0,4643)|0;i=T(g[b+904>>2]);i=T(i+T(Rd(b,2,d)));f=T(g[b+908>>2]);f=T(f+T(Rd(b,0,d)))}Qd(b,i,f,h,1,1,i,f,1,4655)|0;if(Ce(b,p)|0?!(te(b,p)|0):0){v=c[1028+(p<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(u-T(g[b+904+(v<<2)>>2]));u=T(u-T(_d(a,p)));u=T(u-T(De(b,p,d)));g[b+400+(c[1044+(p<<2)>>2]<<2)>>2]=u}else r=22;do if((r|0)==22){if(!(te(b,p)|0)?(c[a+8>>2]|0)==1:0){v=c[1028+(p<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(T(u-T(g[b+904+(v<<2)>>2]))*T(.5));g[b+400+(c[1044+(p<<2)>>2]<<2)>>2]=u;break}if(!(te(b,p)|0)?(c[a+8>>2]|0)==2:0){v=c[1028+(p<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(u-T(g[b+904+(v<<2)>>2]));g[b+400+(c[1044+(p<<2)>>2]<<2)>>2]=u}}while(0);if(Ce(b,q)|0?!(te(b,q)|0):0){v=c[1028+(q<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(u-T(g[b+904+(v<<2)>>2]));u=T(u-T(_d(a,q)));u=T(u-T(De(b,q,d)));g[b+400+(c[1044+(q<<2)>>2]<<2)>>2]=u;return}if(!(te(b,q)|0)?(re(a,b)|0)==2:0){v=c[1028+(q<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(T(u-T(g[b+904+(v<<2)>>2]))*T(.5));g[b+400+(c[1044+(q<<2)>>2]<<2)>>2]=u;return}if(te(b,q)|0)return;if((re(a,b)|0)!=3)return;v=c[1028+(q<<2)>>2]|0;u=T(g[a+904+(v<<2)>>2]);u=T(u-T(g[b+904+(v<<2)>>2]));g[b+400+(c[1044+(q<<2)>>2]<<2)>>2]=u;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=fb,f=0;f=c[1028+(d<<2)>>2]|0;e=T(g[b+904+(f<<2)>>2]);e=T(T(g[a+904+(f<<2)>>2])-e);e=T(e-T(g[b+400+(c[1044+(d<<2)>>2]<<2)>>2]));g[b+400+(c[1060+(d<<2)>>2]<<2)>>2]=e;return}function Ce(a,b){a=a|0;b=b|0;a=a+132|0;if(fe(b)|0?c[(Id(a,5,1e3)|0)+4>>2]|0:0){b=1;return b|0}b=(c[(Id(a,c[1060+(b<<2)>>2]|0,1e3)|0)+4>>2]|0)!=0;return b|0}function De(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;a=a+132|0;if(!(fe(b)|0?(e=Id(a,5,1e3)|0,(c[e+4>>2]|0)!=0):0)){e=Id(a,c[1060+(b<<2)>>2]|0,1e3)|0;if(!(c[e+4>>2]|0)){d=T(0.0);return T(d)}}d=T(je(e,d));return T(d)}function Ee(a){a=a|0;return (a|1|0)==1|0}function Fe(b){b=b|0;return (a[11740+b>>0]|0)!=0|0}function Ge(a,b,c){a=a|0;b=b|0;c=T(c);if(te(a,b)|0){c=T(ue(a,b,c));return T(c)}else{c=T(-T(De(a,b,c)));return T(c)}return fb}function He(a,b){a=a|0;b=T(b);if((c[a+4>>2]|0)==3){b=T(0.0);return T(b)}b=T(je(a,b));return T(b)}function Ie(b,d,e,f){b=b|0;d=T(d);e=T(e);f=f|0;var g=fb,h=fb,i=0,j=0;c[2327]=(c[2327]|0)+1;me(b);do if(hc(d)|0){if(qe(b,2,d)|0){g=T(je(c[b+972>>2]|0,d));j=1;g=T(g+T(Rd(b,2,d)));break}g=T(je(b+380|0,d));if(!(g>=T(0.0))){j=0;g=d}else j=2}else{j=1;g=d}while(0);do if(hc(e)|0){if(qe(b,0,e)|0){h=T(je(c[b+976>>2]|0,e));i=1;h=T(h+T(Rd(b,0,d)));break}h=T(je(b+388|0,e));if(!(h>=T(0.0))){i=0;h=e}else i=2}else{i=1;h=e}while(0);if(!(Qd(b,g,h,f,j,i,d,e,1,4895)|0))return;ne(b,c[b+496>>2]|0,d,e,d);if(Fe(0)|0)Je(b);if(!(a[11736]|0))return;Cd(b,7);return}function Je(a){a=a|0;var b=0,d=0,e=fb,f=fb,h=0,i=fb,j=fb,k=fb;b=a+400|0;f=T(g[b>>2]);j=T(f-T(B(T(f))));d=a+404|0;e=T(g[d>>2]);i=T(e-T(B(T(e))));h=a+416|0;k=T(+GA(+T(j+T(g[h>>2]))));g[h>>2]=T(k-T(+GA(+j)));h=a+420|0;j=T(+GA(+T(i+T(g[h>>2]))));g[h>>2]=T(j-T(+GA(+i)));g[b>>2]=T(+GA(+f));g[d>>2]=T(+GA(+e));d=Nb(c[a+944>>2]|0)|0;if(!d)return;else b=0;do{Je(Xb(a,b)|0);b=b+1|0}while((b|0)!=(d|0));return}function Ke(b,c){b=b|0;c=c|0;a[11740+b>>0]=c&1;return}function Le(){var a=0;a=zA(8)|0;Me(a);return a|0}function Me(a){a=a|0;var b=0;b=Sb()|0;c[a>>2]=b;c[a+4>>2]=0;nc(b,a);return}function Ne(a){a=a|0;if(a|0){Oe(a);BA(a)}return}function Oe(a){a=a|0;var b=0;Vb(c[a>>2]|0);b=a+4|0;a=c[b>>2]|0;c[b>>2]=0;if(a|0){Pe(a);BA(a)}return}function Pe(a){a=a|0;Qe(a);return}function Qe(a){a=a|0;a=c[a>>2]|0;if(a|0)Za(a|0);return}function Re(a){a=a|0;return oc(a)|0}function Se(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=0;if(b|0){Pe(b);BA(b)}_b(c[a>>2]|0);return}function Te(a,b){a=a|0;b=b|0;fc(c[a>>2]|0,c[b>>2]|0);return}function Ue(a,b){a=a|0;b=b|0;Bc(c[a>>2]|0,b);return}function Ve(a,b,d){a=a|0;b=b|0;d=+d;Nc(c[a>>2]|0,b,T(d));return}function We(a,b,d){a=a|0;b=b|0;d=+d;Oc(c[a>>2]|0,b,T(d));return}function Xe(a,b){a=a|0;b=b|0;vc(c[a>>2]|0,b);return}function Ye(a,b){a=a|0;b=b|0;xc(c[a>>2]|0,b);return}function Ze(a,b){a=a|0;b=b|0;zc(c[a>>2]|0,b);return}function _e(a,b){a=a|0;b=b|0;rc(c[a>>2]|0,b);return}function $e(a,b){a=a|0;b=b|0;Dc(c[a>>2]|0,b);return}function af(a,b){a=a|0;b=b|0;tc(c[a>>2]|0,b);return}function bf(a,b,d){a=a|0;b=b|0;d=+d;Qc(c[a>>2]|0,b,T(d));return}function cf(a,b,d){a=a|0;b=b|0;d=+d;Rc(c[a>>2]|0,b,T(d));return}function df(a,b){a=a|0;b=b|0;Tc(c[a>>2]|0,b);return}function ef(a,b){a=a|0;b=b|0;Fc(c[a>>2]|0,b);return}function ff(a,b){a=a|0;b=b|0;Hc(c[a>>2]|0,b);return}function gf(a,b){a=a|0;b=+b;mc(c[a>>2]|0,T(b));return}function hf(a,b){a=a|0;b=+b;Lc(c[a>>2]|0,T(b));return}function jf(a,b){a=a|0;b=+b;Mc(c[a>>2]|0,T(b));return}function kf(a,b){a=a|0;b=+b;Jc(c[a>>2]|0,T(b));return}function lf(a,b){a=a|0;b=+b;Kc(c[a>>2]|0,T(b));return}function mf(a,b){a=a|0;b=+b;Zc(c[a>>2]|0,T(b));return}function nf(a,b){a=a|0;b=+b;_c(c[a>>2]|0,T(b));return}function of(a){a=a|0;$c(c[a>>2]|0);return}function pf(a,b){a=a|0;b=+b;bd(c[a>>2]|0,T(b));return}function qf(a,b){a=a|0;b=+b;cd(c[a>>2]|0,T(b));return}function rf(a){a=a|0;dd(c[a>>2]|0);return}function sf(a,b){a=a|0;b=+b;fd(c[a>>2]|0,T(b));return}function tf(a,b){a=a|0;b=+b;gd(c[a>>2]|0,T(b));return}function uf(a,b){a=a|0;b=+b;id(c[a>>2]|0,T(b));return}function vf(a,b){a=a|0;b=+b;jd(c[a>>2]|0,T(b));return}function wf(a,b){a=a|0;b=+b;ld(c[a>>2]|0,T(b));return}function xf(a,b){a=a|0;b=+b;md(c[a>>2]|0,T(b));return}function yf(a,b){a=a|0;b=+b;od(c[a>>2]|0,T(b));return}function zf(a,b){a=a|0;b=+b;pd(c[a>>2]|0,T(b));return}function Af(a,b){a=a|0;b=+b;rd(c[a>>2]|0,T(b));return}function Bf(a,b,d){a=a|0;b=b|0;d=+d;Xc(c[a>>2]|0,b,T(d));return}function Cf(a,b,d){a=a|0;b=b|0;d=+d;Uc(c[a>>2]|0,b,T(d));return}function Df(a,b,d){a=a|0;b=b|0;d=+d;Vc(c[a>>2]|0,b,T(d));return}function Ef(a){a=a|0;return Cc(c[a>>2]|0)|0}function Ff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Pc(f,c[b>>2]|0,d);Gf(a,f);l=e;return}function Gf(a,b){a=a|0;b=b|0;Hf(a,c[b+4>>2]|0,+T(g[b>>2]));return}function Hf(a,b,d){a=a|0;b=b|0;d=+d;c[a>>2]=b;h[a+8>>3]=d;return}function If(a){a=a|0;return wc(c[a>>2]|0)|0}function Jf(a){a=a|0;return yc(c[a>>2]|0)|0}function Kf(a){a=a|0;return Ac(c[a>>2]|0)|0}function Lf(a){a=a|0;return sc(c[a>>2]|0)|0}function Mf(a){a=a|0;return Ec(c[a>>2]|0)|0}function Nf(a){a=a|0;return uc(c[a>>2]|0)|0}function Of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Sc(f,c[b>>2]|0,d);Gf(a,f);l=e;return}function Pf(a){a=a|0;return Gc(c[a>>2]|0)|0}function Qf(a){a=a|0;return Ic(c[a>>2]|0)|0}function Rf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;kc(e,c[b>>2]|0);Gf(a,e);l=d;return}function Sf(a){a=a|0;return +(+T(gc(c[a>>2]|0)))}function Tf(a){a=a|0;return +(+T(jc(c[a>>2]|0)))}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;ad(e,c[b>>2]|0);Gf(a,e);l=d;return}function Vf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;ed(e,c[b>>2]|0);Gf(a,e);l=d;return}function Wf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;hd(e,c[b>>2]|0);Gf(a,e);l=d;return}function Xf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;kd(e,c[b>>2]|0);Gf(a,e);l=d;return}function Yf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;nd(e,c[b>>2]|0);Gf(a,e);l=d;return}function Zf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;qd(e,c[b>>2]|0);Gf(a,e);l=d;return}function _f(a){a=a|0;return +(+T(sd(c[a>>2]|0)))}function $f(a,b){a=a|0;b=b|0;return +(+T(Yc(c[a>>2]|0,b)))}function ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wc(f,c[b>>2]|0,d);Gf(a,f);l=e;return}function bg(a,b,d){a=a|0;b=b|0;d=d|0;bc(c[a>>2]|0,c[b>>2]|0,d);return}function cg(a,b){a=a|0;b=b|0;Yb(c[a>>2]|0,c[b>>2]|0);return}function dg(a){a=a|0;return Wb(c[a>>2]|0)|0}function eg(a){a=a|0;a=cc(c[a>>2]|0)|0;if(!a)a=0;else a=Re(a)|0;return a|0}function fg(a,b){a=a|0;b=b|0;a=Xb(c[a>>2]|0,b)|0;if(!a)a=0;else a=Re(a)|0;return a|0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0;e=zA(4)|0;hg(e,b);d=a+4|0;b=c[d>>2]|0;c[d>>2]=e;if(b|0){Pe(b);BA(b)}ac(c[a>>2]|0,1);return}function hg(a,b){a=a|0;b=b|0;Bg(a,b);return}function ig(a,b,c,d,e,f){a=a|0;b=b|0;c=T(c);d=d|0;e=T(e);f=f|0;var i=0,j=0;i=l;l=l+16|0;j=i;jg(j,oc(b)|0,+c,d,+e,f);g[a>>2]=T(+h[j>>3]);g[a+4>>2]=T(+h[j+8>>3]);l=i;return}function jg(a,b,d,e,f,g){a=a|0;b=b|0;d=+d;e=e|0;f=+f;g=g|0;var i=0,j=0,k=0,m=0,n=0;i=l;l=l+32|0;n=i+8|0;m=i+20|0;k=i;j=i+16|0;h[n>>3]=d;c[m>>2]=e;h[k>>3]=f;c[j>>2]=g;kg(a,c[b+4>>2]|0,n,m,k,j);l=i;return}function kg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0;i=l;l=l+16|0;j=i;Wy(j);b=lg(b)|0;mg(a,b,+h[d>>3],c[e>>2]|0,+h[f>>3],c[g>>2]|0);Yy(j);l=i;return}function lg(a){a=a|0;return c[a>>2]|0}function mg(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=d|0;e=+e;f=f|0;var g=0;g=og(ng()|0)|0;c=+pg(c);d=qg(d)|0;e=+pg(e);rg(a,$a(0,g|0,b|0,+c,d|0,+e,qg(f)|0)|0);return}function ng(){var b=0;if(!(a[8840]|0)){yg(9316);b=8840;c[b>>2]=1;c[b+4>>2]=0}return 9316}function og(a){a=a|0;return c[a+8>>2]|0}function pg(a){a=+a;return +(+xg(a))}function qg(a){a=a|0;return wg(a)|0}function rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f;e=b;if(!(e&1)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}else{sg(d,0);Ha(e|0,d|0)|0;tg(a,d);ug(d)}l=f;return}function sg(b,d){b=b|0;d=d|0;vg(b,d);c[b+8>>2]=0;a[b+24>>0]=0;return}function tg(a,b){a=a|0;b=b|0;b=b+8|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function ug(b){b=b|0;a[b+24>>0]=0;return}function vg(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function wg(a){a=a|0;return a|0}function xg(a){a=+a;return +a}function yg(a){a=a|0;Ag(a,zg()|0,4);return}function zg(){return 1100}function Ag(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=Xa(b|0,d+1|0)|0;return}function Bg(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;ya(b|0);return}function Cg(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=0;if(b|0){Pe(b);BA(b)}ac(c[a>>2]|0,0);return}function Dg(a){a=a|0;dc(c[a>>2]|0);return}function Eg(a){a=a|0;return ec(c[a>>2]|0)|0}function Fg(a,b){a=a|0;b=b|0;pc(c[a>>2]|0,b);return}function Gg(a){a=a|0;return qc(c[a>>2]|0)|0}function Hg(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;Ie(c[a>>2]|0,T(b),T(d),e);return}function Ig(a){a=a|0;return +(+T(td(c[a>>2]|0)))}function Jg(a){a=a|0;return +(+T(vd(c[a>>2]|0)))}function Kg(a){a=a|0;return +(+T(ud(c[a>>2]|0)))}function Lg(a){a=a|0;return +(+T(wd(c[a>>2]|0)))}function Mg(a){a=a|0;return +(+T(xd(c[a>>2]|0)))}function Ng(a){a=a|0;return +(+T(yd(c[a>>2]|0)))}function Og(a,b){a=a|0;b=b|0;h[a>>3]=+T(td(c[b>>2]|0));h[a+8>>3]=+T(vd(c[b>>2]|0));h[a+16>>3]=+T(ud(c[b>>2]|0));h[a+24>>3]=+T(wd(c[b>>2]|0));h[a+32>>3]=+T(xd(c[b>>2]|0));h[a+40>>3]=+T(yd(c[b>>2]|0));return}function Pg(a,b){a=a|0;b=b|0;return +(+T(zd(c[a>>2]|0,b)))}function Qg(a,b){a=a|0;b=b|0;return +(+T(Ad(c[a>>2]|0,b)))}function Rg(a,b){a=a|0;b=b|0;return +(+T(Bd(c[a>>2]|0,b)))}function Sg(a,b){a=a|0;b=b|0;Ke(a,b);return}function Tg(a){a=a|0;return Fe(a)|0}function Ug(){return $b()|0}function Vg(){Wg();Xg();Yg();Zg();_g();$g();ah();return}function Wg(){lt(11756,6156,1);return}function Xg(){Vs(11755,6127,3);return}function Yg(){Es(11754,6110,1);return}function Zg(){Sr(10416);return}function _g(){yr(10376);return}function $g(){Pq(10292);return}function ah(){bh(9328);return}function bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;b=l;l=l+688|0;d=b+672|0;Ia=b+664|0;Ha=b+656|0;Ga=b+648|0;Fa=b+640|0;Ea=b+632|0;Da=b+624|0;Ca=b+616|0;Ba=b+608|0;Aa=b+600|0;za=b+592|0;ya=b+584|0;xa=b+576|0;wa=b+568|0;va=b+560|0;ua=b+552|0;ta=b+544|0;sa=b+536|0;ra=b+528|0;qa=b+520|0;pa=b+512|0;oa=b+504|0;na=b+496|0;ma=b+488|0;la=b+480|0;ka=b+472|0;ja=b+464|0;ia=b+456|0;ha=b+448|0;ga=b+440|0;fa=b+432|0;ea=b+424|0;da=b+416|0;ca=b+408|0;ba=b+400|0;aa=b+392|0;$=b+384|0;_=b+376|0;Z=b+368|0;Y=b+360|0;X=b+352|0;W=b+344|0;V=b+336|0;U=b+328|0;T=b+320|0;S=b+312|0;R=b+304|0;Q=b+296|0;P=b+288|0;O=b+280|0;N=b+272|0;M=b+264|0;L=b+256|0;K=b+248|0;J=b+240|0;I=b+232|0;H=b+224|0;G=b+216|0;F=b+208|0;E=b+200|0;D=b+192|0;C=b+184|0;B=b+176|0;A=b+168|0;z=b+160|0;y=b+152|0;x=b+144|0;w=b+136|0;v=b+128|0;u=b+120|0;t=b+112|0;s=b+104|0;r=b+96|0;q=b+88|0;p=b+80|0;o=b+72|0;n=b+64|0;m=b+56|0;k=b+48|0;j=b+40|0;i=b+32|0;h=b+24|0;g=b+16|0;f=b+8|0;e=b;ch(a,4903);dh(a,4908,2)|0;eh(a,4915,18)|0;c[Ia>>2]=19;c[Ia+4>>2]=0;c[d>>2]=c[Ia>>2];c[d+4>>2]=c[Ia+4>>2];fh(a,4923,d)|0;c[Ha>>2]=2;c[Ha+4>>2]=0;c[d>>2]=c[Ha>>2];c[d+4>>2]=c[Ha+4>>2];gh(a,4929,d)|0;c[Ga>>2]=3;c[Ga+4>>2]=0;c[d>>2]=c[Ga>>2];c[d+4>>2]=c[Ga+4>>2];hh(a,4939,d)|0;c[Fa>>2]=1;c[Fa+4>>2]=0;c[d>>2]=c[Fa>>2];c[d+4>>2]=c[Fa+4>>2];ih(a,4955,d)|0;c[Ea>>2]=2;c[Ea+4>>2]=0;c[d>>2]=c[Ea>>2];c[d+4>>2]=c[Ea+4>>2];ih(a,4967,d)|0;c[Da>>2]=4;c[Da+4>>2]=0;c[d>>2]=c[Da>>2];c[d+4>>2]=c[Da+4>>2];hh(a,4986,d)|0;c[Ca>>2]=5;c[Ca+4>>2]=0;c[d>>2]=c[Ca>>2];c[d+4>>2]=c[Ca+4>>2];hh(a,5002,d)|0;c[Ba>>2]=6;c[Ba+4>>2]=0;c[d>>2]=c[Ba>>2];c[d+4>>2]=c[Ba+4>>2];hh(a,5016,d)|0;c[Aa>>2]=7;c[Aa+4>>2]=0;c[d>>2]=c[Aa>>2];c[d+4>>2]=c[Aa+4>>2];hh(a,5029,d)|0;c[za>>2]=8;c[za+4>>2]=0;c[d>>2]=c[za>>2];c[d+4>>2]=c[za+4>>2];hh(a,5046,d)|0;c[ya>>2]=9;c[ya+4>>2]=0;c[d>>2]=c[ya>>2];c[d+4>>2]=c[ya+4>>2];hh(a,5058,d)|0;c[xa>>2]=3;c[xa+4>>2]=0;c[d>>2]=c[xa>>2];c[d+4>>2]=c[xa+4>>2];ih(a,5076,d)|0;c[wa>>2]=4;c[wa+4>>2]=0;c[d>>2]=c[wa>>2];c[d+4>>2]=c[wa+4>>2];ih(a,5086,d)|0;c[va>>2]=10;c[va+4>>2]=0;c[d>>2]=c[va>>2];c[d+4>>2]=c[va+4>>2];hh(a,5103,d)|0;c[ua>>2]=11;c[ua+4>>2]=0;c[d>>2]=c[ua>>2];c[d+4>>2]=c[ua+4>>2];hh(a,5117,d)|0;c[ta>>2]=12;c[ta+4>>2]=0;c[d>>2]=c[ta>>2];c[d+4>>2]=c[ta+4>>2];hh(a,5129,d)|0;c[sa>>2]=1;c[sa+4>>2]=0;c[d>>2]=c[sa>>2];c[d+4>>2]=c[sa+4>>2];jh(a,5140,d)|0;c[ra>>2]=2;c[ra+4>>2]=0;c[d>>2]=c[ra>>2];c[d+4>>2]=c[ra+4>>2];jh(a,5148,d)|0;c[qa>>2]=3;c[qa+4>>2]=0;c[d>>2]=c[qa>>2];c[d+4>>2]=c[qa+4>>2];jh(a,5161,d)|0;c[pa>>2]=4;c[pa+4>>2]=0;c[d>>2]=c[pa>>2];c[d+4>>2]=c[pa+4>>2];jh(a,5181,d)|0;c[oa>>2]=5;c[oa+4>>2]=0;c[d>>2]=c[oa>>2];c[d+4>>2]=c[oa+4>>2];jh(a,5193,d)|0;c[na>>2]=6;c[na+4>>2]=0;c[d>>2]=c[na>>2];c[d+4>>2]=c[na+4>>2];jh(a,5207,d)|0;c[ma>>2]=7;c[ma+4>>2]=0;c[d>>2]=c[ma>>2];c[d+4>>2]=c[ma+4>>2];jh(a,5216,d)|0;c[la>>2]=20;c[la+4>>2]=0;c[d>>2]=c[la>>2];c[d+4>>2]=c[la+4>>2];fh(a,5232,d)|0;c[ka>>2]=8;c[ka+4>>2]=0;c[d>>2]=c[ka>>2];c[d+4>>2]=c[ka+4>>2];jh(a,5245,d)|0;c[ja>>2]=9;c[ja+4>>2]=0;c[d>>2]=c[ja>>2];c[d+4>>2]=c[ja+4>>2];jh(a,5255,d)|0;c[ia>>2]=21;c[ia+4>>2]=0;c[d>>2]=c[ia>>2];c[d+4>>2]=c[ia+4>>2];fh(a,5272,d)|0;c[ha>>2]=10;c[ha+4>>2]=0;c[d>>2]=c[ha>>2];c[d+4>>2]=c[ha+4>>2];jh(a,5286,d)|0;c[ga>>2]=11;c[ga+4>>2]=0;c[d>>2]=c[ga>>2];c[d+4>>2]=c[ga+4>>2];jh(a,5298,d)|0;c[fa>>2]=12;c[fa+4>>2]=0;c[d>>2]=c[fa>>2];c[d+4>>2]=c[fa+4>>2];jh(a,5317,d)|0;c[ea>>2]=13;c[ea+4>>2]=0;c[d>>2]=c[ea>>2];c[d+4>>2]=c[ea+4>>2];jh(a,5330,d)|0;c[da>>2]=14;c[da+4>>2]=0;c[d>>2]=c[da>>2];c[d+4>>2]=c[da+4>>2];jh(a,5350,d)|0;c[ca>>2]=15;c[ca+4>>2]=0;c[d>>2]=c[ca>>2];c[d+4>>2]=c[ca+4>>2];jh(a,5362,d)|0;c[ba>>2]=16;c[ba+4>>2]=0;c[d>>2]=c[ba>>2];c[d+4>>2]=c[ba+4>>2];jh(a,5381,d)|0;c[aa>>2]=17;c[aa+4>>2]=0;c[d>>2]=c[aa>>2];c[d+4>>2]=c[aa+4>>2];jh(a,5394,d)|0;c[$>>2]=18;c[$+4>>2]=0;c[d>>2]=c[$>>2];c[d+4>>2]=c[$+4>>2];jh(a,5414,d)|0;c[_>>2]=5;c[_+4>>2]=0;c[d>>2]=c[_>>2];c[d+4>>2]=c[_+4>>2];ih(a,5429,d)|0;c[Z>>2]=6;c[Z+4>>2]=0;c[d>>2]=c[Z>>2];c[d+4>>2]=c[Z+4>>2];ih(a,5439,d)|0;c[Y>>2]=7;c[Y+4>>2]=0;c[d>>2]=c[Y>>2];c[d+4>>2]=c[Y+4>>2];ih(a,5450,d)|0;c[X>>2]=4;c[X+4>>2]=0;c[d>>2]=c[X>>2];c[d+4>>2]=c[X+4>>2];kh(a,5468,d)|0;c[W>>2]=1;c[W+4>>2]=0;c[d>>2]=c[W>>2];c[d+4>>2]=c[W+4>>2];lh(a,5484,d)|0;c[V>>2]=5;c[V+4>>2]=0;c[d>>2]=c[V>>2];c[d+4>>2]=c[V+4>>2];kh(a,5496,d)|0;c[U>>2]=6;c[U+4>>2]=0;c[d>>2]=c[U>>2];c[d+4>>2]=c[U+4>>2];kh(a,5512,d)|0;c[T>>2]=7;c[T+4>>2]=0;c[d>>2]=c[T>>2];c[d+4>>2]=c[T+4>>2];kh(a,5526,d)|0;c[S>>2]=8;c[S+4>>2]=0;c[d>>2]=c[S>>2];c[d+4>>2]=c[S+4>>2];kh(a,5539,d)|0;c[R>>2]=9;c[R+4>>2]=0;c[d>>2]=c[R>>2];c[d+4>>2]=c[R+4>>2];kh(a,5556,d)|0;c[Q>>2]=10;c[Q+4>>2]=0;c[d>>2]=c[Q>>2];c[d+4>>2]=c[Q+4>>2];kh(a,5568,d)|0;c[P>>2]=2;c[P+4>>2]=0;c[d>>2]=c[P>>2];c[d+4>>2]=c[P+4>>2];lh(a,5586,d)|0;c[O>>2]=13;c[O+4>>2]=0;c[d>>2]=c[O>>2];c[d+4>>2]=c[O+4>>2];mh(a,5596,d)|0;c[N>>2]=1;c[N+4>>2]=0;c[d>>2]=c[N>>2];c[d+4>>2]=c[N+4>>2];nh(a,5609,d)|0;c[M>>2]=2;c[M+4>>2]=0;c[d>>2]=c[M>>2];c[d+4>>2]=c[M+4>>2];nh(a,5621,d)|0;c[L>>2]=14;c[L+4>>2]=0;c[d>>2]=c[L>>2];c[d+4>>2]=c[L+4>>2];mh(a,5635,d)|0;c[K>>2]=15;c[K+4>>2]=0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];mh(a,5644,d)|0;c[J>>2]=16;c[J+4>>2]=0;c[d>>2]=c[J>>2];c[d+4>>2]=c[J+4>>2];mh(a,5654,d)|0;c[I>>2]=17;c[I+4>>2]=0;c[d>>2]=c[I>>2];c[d+4>>2]=c[I+4>>2];mh(a,5666,d)|0;c[H>>2]=18;c[H+4>>2]=0;c[d>>2]=c[H>>2];c[d+4>>2]=c[H+4>>2];mh(a,5679,d)|0;c[G>>2]=19;c[G+4>>2]=0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];mh(a,5691,d)|0;c[F>>2]=3;c[F+4>>2]=0;c[d>>2]=c[F>>2];c[d+4>>2]=c[F+4>>2];nh(a,5704,d)|0;c[E>>2]=1;c[E+4>>2]=0;c[d>>2]=c[E>>2];c[d+4>>2]=c[E+4>>2];oh(a,5719,d)|0;c[D>>2]=11;c[D+4>>2]=0;c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];kh(a,5729,d)|0;c[C>>2]=12;c[C+4>>2]=0;c[d>>2]=c[C>>2];c[d+4>>2]=c[C+4>>2];kh(a,5741,d)|0;c[B>>2]=3;c[B+4>>2]=0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];lh(a,5752,d)|0;c[A>>2]=4;c[A+4>>2]=0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];ph(a,5763,d)|0;c[z>>2]=20;c[z+4>>2]=0;c[d>>2]=c[z>>2];c[d+4>>2]=c[z+4>>2];qh(a,5775,d)|0;c[y>>2]=13;c[y+4>>2]=0;c[d>>2]=c[y>>2];c[d+4>>2]=c[y+4>>2];rh(a,5787,d)|0;c[x>>2]=14;c[x+4>>2]=0;c[d>>2]=c[x>>2];c[d+4>>2]=c[x+4>>2];sh(a,5801,d)|0;c[w>>2]=3;c[w+4>>2]=0;c[d>>2]=c[w>>2];c[d+4>>2]=c[w+4>>2];th(a,5811,d)|0;c[v>>2]=21;c[v+4>>2]=0;c[d>>2]=c[v>>2];c[d+4>>2]=c[v+4>>2];uh(a,5820,d)|0;c[u>>2]=22;c[u+4>>2]=0;c[d>>2]=c[u>>2];c[d+4>>2]=c[u+4>>2];fh(a,5835,d)|0;c[t>>2]=22;c[t+4>>2]=0;c[d>>2]=c[t>>2];c[d+4>>2]=c[t+4>>2];vh(a,5852,d)|0;c[s>>2]=15;c[s+4>>2]=0;c[d>>2]=c[s>>2];c[d+4>>2]=c[s+4>>2];wh(a,5868,d)|0;c[r>>2]=23;c[r+4>>2]=0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];fh(a,5884,d)|0;c[q>>2]=16;c[q+4>>2]=0;c[d>>2]=c[q>>2];c[d+4>>2]=c[q+4>>2];wh(a,5894,d)|0;c[p>>2]=1;c[p+4>>2]=0;c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];xh(a,5902,d)|0;c[o>>2]=4;c[o+4>>2]=0;c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];nh(a,5918,d)|0;c[n>>2]=5;c[n+4>>2]=0;c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];nh(a,5934,d)|0;c[m>>2]=6;c[m+4>>2]=0;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];nh(a,5951,d)|0;c[k>>2]=7;c[k+4>>2]=0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];nh(a,5966,d)|0;c[j>>2]=8;c[j+4>>2]=0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];nh(a,5984,d)|0;c[i>>2]=9;c[i+4>>2]=0;c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];nh(a,6001,d)|0;c[h>>2]=23;c[h+4>>2]=0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];yh(a,6019,d)|0;c[g>>2]=2;c[g+4>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];oh(a,6037,d)|0;c[f>>2]=3;c[f+4>>2]=0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];oh(a,6055,d)|0;c[e>>2]=4;c[e+4>>2]=0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];oh(a,6073,d)|0;l=b;return}function ch(a,b){a=a|0;b=b|0;var d=0;d=Eq()|0;c[a>>2]=d;Fq(d,b);Jt(c[a>>2]|0);return}function dh(a,b,c){a=a|0;b=b|0;c=c|0;nq(a,Ah(b)|0,c,0);return a|0}function eh(a,b,c){a=a|0;b=b|0;c=c|0;Yp(a,Ah(b)|0,c,0);return a|0}function fh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Fp(a,b,f);l=e;return a|0}function gh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];jp(a,b,f);l=e;return a|0}function hh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];So(a,b,f);l=e;return a|0}function ih(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];zo(a,b,f);l=e;return a|0}function jh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];go(a,b,f);l=e;return a|0}function kh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];On(a,b,f);l=e;return a|0}function lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];vn(a,b,f);l=e;return a|0}function mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Om(a,b,f);l=e;return a|0}function nh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];vm(a,b,f);l=e;return a|0}function oh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];cm(a,b,f);l=e;return a|0}function ph(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Ll(a,b,f);l=e;return a|0}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];pl(a,b,f);l=e;return a|0}function rh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Xk(a,b,f);l=e;return a|0}function sh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Ek(a,b,f);l=e;return a|0}function th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];hk(a,b,f);l=e;return a|0}function uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Lj(a,b,f);l=e;return a|0}function vh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];pj(a,b,f);l=e;return a|0}function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Xi(a,b,f);l=e;return a|0}function xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];yi(a,b,f);l=e;return a|0}function yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=c[d+4>>2]|0;c[g>>2]=c[d>>2];c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];zh(a,b,f);l=e;return a|0}function zh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Bh(a,d,f,1);l=e;return}function Ah(a){a=a|0;return a|0}function Bh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Ch()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Dh(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Eh(g,e)|0,e);l=f;return}function Ch(){var b=0,d=0;if(!(a[8848]|0)){Qh(9332);Fa(24,9332,o|0)|0;d=8848;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9332)|0)){b=9332;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Qh(9332)}return 9332}function Dh(a){a=a|0;return 0}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Ch()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Kh(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Lh(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Fh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;h=l;l=l+32|0;o=h+24|0;n=h+20|0;j=h+16|0;m=h+12|0;k=h+8|0;i=h+4|0;p=h;c[n>>2]=b;c[j>>2]=d;c[m>>2]=e;c[k>>2]=f;c[i>>2]=g;g=a+28|0;c[p>>2]=c[g>>2];c[o>>2]=c[p>>2];Gh(a+24|0,o,n,m,k,j,i)|0;c[g>>2]=c[c[g>>2]>>2];l=h;return}function Gh(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=Hh(b)|0;b=zA(24)|0;Ih(b+4|0,c[d>>2]|0,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);c[b>>2]=c[a>>2];c[a>>2]=b;return b|0}function Hh(a){a=a|0;return c[a>>2]|0}function Ih(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=f;c[a+16>>2]=g;return}function Jh(a,b){a=a|0;b=b|0;return b|a|0}function Kh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Mh(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Nh(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Kh(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Oh(a,i);Ph(i);l=k;return}}function Mh(a){a=a|0;return 357913941}function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Ph(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Qh(a){a=a|0;Uh(a);return}function Rh(a){a=a|0;Th(a+24|0);return}function Sh(a){a=a|0;return c[a>>2]|0}function Th(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Uh(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,4,b,Wh()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Vh(){return 9424}function Wh(){return 1176}function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=Zh(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=_h(b,e)|0;l=d;return b|0}function Yh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=f;c[a+16>>2]=g;return}function Zh(a){a=a|0;return (c[(Ch()|0)+24>>2]|0)+(a*12|0)|0}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+48|0;e=f;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;kb[d&31](e,a);e=$h(e)|0;l=f;return e|0}function $h(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(ai()|0)|0;if(!d)a=gi(a)|0;else{ci(b,d);di(c,b);ei(a,c);a=fi(b)|0}l=e;return a|0}function ai(){var b=0;if(!(a[8864]|0)){ri(9380);Fa(25,9380,o|0)|0;b=8864;c[b>>2]=1;c[b+4>>2]=0}return 9380}function bi(a){a=a|0;return c[a+36>>2]|0}function ci(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=a;c[a+8>>2]=0;return}function di(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=0;return}function ei(a,b){a=a|0;b=b|0;li(b,a,a+8|0,a+16|0,a+24|0,a+32|0,a+40|0)|0;return}function fi(a){a=a|0;return c[(c[a+4>>2]|0)+8>>2]|0}function gi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;d=j+4|0;e=j;f=lw(8)|0;g=f;h=zA(48)|0;i=h;b=i+48|0;do{c[i>>2]=c[a>>2];i=i+4|0;a=a+4|0}while((i|0)<(b|0));b=g+4|0;c[b>>2]=h;i=zA(8)|0;h=c[b>>2]|0;c[e>>2]=0;c[d>>2]=c[e>>2];hi(i,h,d);c[f>>2]=i;l=j;return g|0}function hi(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=1128;c[d+12>>2]=b;c[a+4>>2]=d;return}function ii(a){a=a|0;tA(a);BA(a);return}function ji(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}function ki(a){a=a|0;BA(a);return}function li(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=mi(c[a>>2]|0,b,d,e,f,g,h)|0;h=a+4|0;c[(c[h>>2]|0)+8>>2]=g;return c[(c[h>>2]|0)+8>>2]|0}function mi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0;i=l;l=l+16|0;j=i;Wy(j);a=lg(a)|0;g=ni(a,+h[b>>3],+h[c>>3],+h[d>>3],+h[e>>3],+h[f>>3],+h[g>>3])|0;Yy(j);l=i;return g|0}function ni(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var h=0;h=og(oi()|0)|0;b=+pg(b);c=+pg(c);d=+pg(d);e=+pg(e);f=+pg(f);return wa(0,h|0,a|0,+b,+c,+d,+e,+f,+(+pg(g)))|0}function oi(){var b=0;if(!(a[8856]|0)){pi(9368);b=8856;c[b>>2]=1;c[b+4>>2]=0}return 9368}function pi(a){a=a|0;Ag(a,qi()|0,6);return}function qi(){return 1148}function ri(a){a=a|0;xi(a);return}function si(a){a=a|0;ti(a+24|0);ui(a+16|0);return}function ti(a){a=a|0;wi(a);return}function ui(a){a=a|0;vi(a);return}function vi(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;BA(d)}while((b|0)!=0);c[a>>2]=0;return}function wi(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;BA(d)}while((b|0)!=0);c[a>>2]=0;return}function xi(b){b=b|0;var d=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+24|0;c[d>>2]=0;c[b+28>>2]=d;c[b+36>>2]=0;a[b+40>>0]=0;a[b+41>>0]=0;return}function yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];zi(a,d,f,0);l=e;return}function zi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Ai()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Bi(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Ci(g,e)|0,e);l=f;return}function Ai(){var b=0,d=0;if(!(a[8872]|0)){Ji(9428);Fa(26,9428,o|0)|0;d=8872;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9428)|0)){b=9428;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ji(9428)}return 9428}function Bi(a){a=a|0;return 0}function Ci(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Ai()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Di(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Ei(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Di(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Fi(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Gi(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Di(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Hi(a,i);Ii(i);l=k;return}}function Fi(a){a=a|0;return 357913941}function Gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Ii(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Ji(a){a=a|0;Mi(a);return}function Ki(a){a=a|0;Li(a+24|0);return}function Li(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Mi(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,Ni()|0,3);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Ni(){return 1180}function Oi(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+8|0;i=g;j=Pi(a)|0;a=c[j+4>>2]|0;c[i>>2]=c[j>>2];c[i+4>>2]=a;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];Qi(b,h,d,e,f);l=g;return}function Pi(a){a=a|0;return (c[(Ai()|0)+24>>2]|0)+(a*12|0)|0}function Qi(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+2|0;i=k+1|0;j=k;g=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)g=c[(c[a>>2]|0)+g>>2]|0;Ri(h,d);d=+Si(h,d);Ri(i,e);e=+Si(i,e);Ti(j,f);j=Ui(j,f)|0;mb[g&1](a,d,e,j);l=k;return}function Ri(a,b){a=a|0;b=+b;return}function Si(a,b){a=a|0;b=+b;return +(+Wi(b))}function Ti(a,b){a=a|0;b=b|0;return}function Ui(a,b){a=a|0;b=b|0;return Vi(b)|0}function Vi(a){a=a|0;return a|0}function Wi(a){a=+a;return +a}function Xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Yi(a,d,f,1);l=e;return}function Yi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Zi()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=_i(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,$i(g,e)|0,e);l=f;return}function Zi(){var b=0,d=0;if(!(a[8880]|0)){gj(9464);Fa(27,9464,o|0)|0;d=8880;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9464)|0)){b=9464;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));gj(9464)}return 9464}function _i(a){a=a|0;return 0}function $i(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Zi()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];aj(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{bj(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function aj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=cj(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;dj(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];aj(g,e,d);c[j>>2]=(c[j>>2]|0)+12;ej(a,i);fj(i);l=k;return}}function cj(a){a=a|0;return 357913941}function dj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function ej(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function gj(a){a=a|0;jj(a);return}function hj(a){a=a|0;ij(a+24|0);return}function ij(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function jj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,kj()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function kj(){return 1196}function lj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=mj(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=nj(b,e)|0;l=d;return b|0}function mj(a){a=a|0;return (c[(Zi()|0)+24>>2]|0)+(a*12|0)|0}function nj(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;return oj(lb[d&31](a)|0)|0}function oj(a){a=a|0;return a&1|0}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];qj(a,d,f,0);l=e;return}function qj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=rj()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=sj(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,tj(g,e)|0,e);l=f;return}function rj(){var b=0,d=0;if(!(a[8888]|0)){Aj(9500);Fa(28,9500,o|0)|0;d=8888;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9500)|0)){b=9500;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Aj(9500)}return 9500}function sj(a){a=a|0;return 0}function tj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=rj()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];uj(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{vj(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function uj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=wj(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;xj(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];uj(g,e,d);c[j>>2]=(c[j>>2]|0)+12;yj(a,i);zj(i);l=k;return}}function wj(a){a=a|0;return 357913941}function xj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function zj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Aj(a){a=a|0;Dj(a);return}function Bj(a){a=a|0;Cj(a+24|0);return}function Cj(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Dj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,Ej()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Ej(){return 1200}function Fj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=Gj(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Hj(b,f,d);l=e;return}function Gj(a){a=a|0;return (c[(rj()|0)+24>>2]|0)+(a*12|0)|0}function Hj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ij(f,d);f=Jj(f,d)|0;kb[e&31](a,f);l=g;return}function Ij(a,b){a=a|0;b=b|0;return}function Jj(a,b){a=a|0;b=b|0;return Kj(b)|0}function Kj(a){a=a|0;return (a|0)!=0|0}function Lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Mj(a,d,f,0);l=e;return}function Mj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Nj()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Oj(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Pj(g,e)|0,e);l=f;return}function Nj(){var b=0,d=0;if(!(a[8896]|0)){Wj(9536);Fa(29,9536,o|0)|0;d=8896;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9536)|0)){b=9536;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Wj(9536)}return 9536}function Oj(a){a=a|0;return 0}function Pj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Nj()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Qj(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Rj(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Sj(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Tj(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Qj(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Uj(a,i);Vj(i);l=k;return}}function Sj(a){a=a|0;return 357913941}function Tj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Vj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Wj(a){a=a|0;Zj(a);return}function Xj(a){a=a|0;Yj(a+24|0);return}function Yj(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Zj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,_j()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function _j(){return 1208}function $j(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=ak(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];bk(b,f,d);l=e;return}function ak(a){a=a|0;return (c[(Nj()|0)+24>>2]|0)+(a*12|0)|0}function bk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;ck(f,d);d=dk(f,d)|0;kb[e&31](a,d);ek(f);l=g;return}function ck(a,b){a=a|0;b=b|0;fk(a,b);return}function dk(a,b){a=a|0;b=b|0;return a|0}function ek(a){a=a|0;Pe(a);return}function fk(a,b){a=a|0;b=b|0;gk(a,b);return}function gk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function hk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];ik(a,d,f,0);l=e;return}function ik(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=jk()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=kk(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,lk(g,e)|0,e);l=f;return}function jk(){var b=0,d=0;if(!(a[8904]|0)){sk(9572);Fa(30,9572,o|0)|0;d=8904;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9572)|0)){b=9572;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));sk(9572)}return 9572}function kk(a){a=a|0;return 0}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=jk()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];mk(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{nk(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function mk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=ok(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;pk(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];mk(g,e,d);c[j>>2]=(c[j>>2]|0)+12;qk(a,i);rk(i);l=k;return}}function ok(a){a=a|0;return 357913941}function pk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function rk(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function sk(a){a=a|0;vk(a);return}function tk(a){a=a|0;uk(a+24|0);return}function uk(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function vk(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,wk()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function wk(){return 1224}function xk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=yk(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];d=zk(b,f,d)|0;l=e;return d|0}function yk(a){a=a|0;return (c[(jk()|0)+24>>2]|0)+(a*12|0)|0}function zk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ak(f,d);f=Bk(f,d)|0;f=Ck(sb[e&15](a,f)|0)|0;l=g;return f|0}function Ak(a,b){a=a|0;b=b|0;return}function Bk(a,b){a=a|0;b=b|0;return Dk(b)|0}function Ck(a){a=a|0;return a|0}function Dk(a){a=a|0;return a|0}function Ek(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Fk(a,d,f,0);l=e;return}function Fk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Gk()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Hk(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Ik(g,e)|0,e);l=f;return}function Gk(){var b=0,d=0;if(!(a[8912]|0)){Pk(9608);Fa(31,9608,o|0)|0;d=8912;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9608)|0)){b=9608;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Pk(9608)}return 9608}function Hk(a){a=a|0;return 0}function Ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Gk()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Jk(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Kk(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Jk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Lk(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Mk(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Jk(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Nk(a,i);Ok(i);l=k;return}}function Lk(a){a=a|0;return 357913941}function Mk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Ok(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Pk(a){a=a|0;Sk(a);return}function Qk(a){a=a|0;Rk(a+24|0);return}function Rk(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Sk(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,Tk()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Tk(){return 1240}function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=Vk(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=Wk(b,e)|0;l=d;return b|0}function Vk(a){a=a|0;return (c[(Gk()|0)+24>>2]|0)+(a*12|0)|0}function Wk(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;return Ck(lb[d&31](a)|0)|0}function Xk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Yk(a,d,f,1);l=e;return}function Yk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Zk()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=_k(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,$k(g,e)|0,e);l=f;return}function Zk(){var b=0,d=0;if(!(a[8920]|0)){gl(9644);Fa(32,9644,o|0)|0;d=8920;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9644)|0)){b=9644;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));gl(9644)}return 9644}function _k(a){a=a|0;return 0}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Zk()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];al(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{bl(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function bl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=cl(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;dl(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];al(g,e,d);c[j>>2]=(c[j>>2]|0)+12;el(a,i);fl(i);l=k;return}}function cl(a){a=a|0;return 357913941}function dl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function el(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function gl(a){a=a|0;jl(a);return}function hl(a){a=a|0;il(a+24|0);return}function il(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function jl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,7,b,kl()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function kl(){return 1244}function ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=ml(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=nl(b,e)|0;l=d;return b|0}function ml(a){a=a|0;return (c[(Zk()|0)+24>>2]|0)+(a*12|0)|0}function nl(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;return ol(lb[d&31](a)|0)|0}function ol(a){a=a|0;return a|0}function pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];ql(a,d,f,0);l=e;return}function ql(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=rl()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=sl(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,tl(g,e)|0,e);l=f;return}function rl(){var b=0,d=0;if(!(a[8928]|0)){Al(9680);Fa(33,9680,o|0)|0;d=8928;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9680)|0)){b=9680;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Al(9680)}return 9680}function sl(a){a=a|0;return 0}function tl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=rl()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];ul(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{vl(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function ul(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=wl(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;xl(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];ul(g,e,d);c[j>>2]=(c[j>>2]|0)+12;yl(a,i);zl(i);l=k;return}}function wl(a){a=a|0;return 357913941}function xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function yl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function zl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Al(a){a=a|0;Dl(a);return}function Bl(a){a=a|0;Cl(a+24|0);return}function Cl(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Dl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,7,b,El()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function El(){return 1248}function Fl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=Gl(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Hl(b,f,d);l=e;return}function Gl(a){a=a|0;return (c[(rl()|0)+24>>2]|0)+(a*12|0)|0}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Il(f,d);f=Jl(f,d)|0;kb[e&31](a,f);l=g;return}function Il(a,b){a=a|0;b=b|0;return}function Jl(a,b){a=a|0;b=b|0;return Kl(b)|0}function Kl(a){a=a|0;return a|0}function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Ml(a,d,f,0);l=e;return}function Ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Nl()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Ol(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Pl(g,e)|0,e);l=f;return}function Nl(){var b=0,d=0;if(!(a[8936]|0)){Wl(9716);Fa(34,9716,o|0)|0;d=8936;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9716)|0)){b=9716;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Wl(9716)}return 9716}function Ol(a){a=a|0;return 0}function Pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Nl()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Ql(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Rl(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Ql(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Rl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Sl(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Tl(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Ql(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Ul(a,i);Vl(i);l=k;return}}function Sl(a){a=a|0;return 357913941}function Tl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Ul(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Vl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Wl(a){a=a|0;Zl(a);return}function Xl(a){a=a|0;Yl(a+24|0);return}function Yl(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Zl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,_l()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function _l(){return 1256}function $l(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=am(a)|0;a=c[i+4>>2]|0;c[h>>2]=c[i>>2];c[h+4>>2]=a;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];bm(b,g,d,e);l=f;return}function am(a){a=a|0;return (c[(Nl()|0)+24>>2]|0)+(a*12|0)|0}function bm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+1|0;h=i;f=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)f=c[(c[a>>2]|0)+f>>2]|0;Il(g,d);g=Jl(g,d)|0;Ak(h,e);h=Bk(h,e)|0;zb[f&15](a,g,h);l=i;return}function cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];dm(a,d,f,1);l=e;return}function dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=em()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=fm(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,gm(g,e)|0,e);l=f;return}function em(){var b=0,d=0;if(!(a[8944]|0)){nm(9752);Fa(35,9752,o|0)|0;d=8944;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9752)|0)){b=9752;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));nm(9752)}return 9752}function fm(a){a=a|0;return 0}function gm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=em()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];hm(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{im(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function hm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=jm(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;km(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];hm(g,e,d);c[j>>2]=(c[j>>2]|0)+12;lm(a,i);mm(i);l=k;return}}function jm(a){a=a|0;return 357913941}function km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function lm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function mm(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function nm(a){a=a|0;qm(a);return}function om(a){a=a|0;pm(a+24|0);return}function pm(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function qm(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,rm()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function rm(){return 1268}function sm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=tm(a)|0;a=c[i+4>>2]|0;c[h>>2]=c[i>>2];c[h+4>>2]=a;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];e=+um(b,g,d);l=f;return +e}function tm(a){a=a|0;return (c[(em()|0)+24>>2]|0)+(a*12|0)|0}function um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0.0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ti(f,d);f=Ui(f,d)|0;h=+xg(+vb[e&7](a,f));l=g;return +h}function vm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];wm(a,d,f,1);l=e;return}function wm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=xm()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=ym(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,zm(g,e)|0,e);l=f;return}function xm(){var b=0,d=0;if(!(a[8952]|0)){Gm(9788);Fa(36,9788,o|0)|0;d=8952;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9788)|0)){b=9788;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Gm(9788)}return 9788}function ym(a){a=a|0;return 0}function zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=xm()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Am(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Bm(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Cm(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Dm(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Am(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Em(a,i);Fm(i);l=k;return}}function Cm(a){a=a|0;return 357913941}function Dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Fm(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Gm(a){a=a|0;Jm(a);return}function Hm(a){a=a|0;Im(a+24|0);return}function Im(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Jm(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,Km()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Km(){return 1276}function Lm(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=Mm(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];d=+Nm(b,f);l=e;return +d}function Mm(a){a=a|0;return (c[(xm()|0)+24>>2]|0)+(a*12|0)|0}function Nm(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;return +(+xg(+qb[d&15](a)))}function Om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Pm(a,d,f,1);l=e;return}function Pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Qm()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Rm(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Sm(g,e)|0,e);l=f;return}function Qm(){var b=0,d=0;if(!(a[8960]|0)){Zm(9824);Fa(37,9824,o|0)|0;d=8960;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9824)|0)){b=9824;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Zm(9824)}return 9824}function Rm(a){a=a|0;return 0}function Sm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Qm()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Tm(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Um(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Tm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Vm(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Wm(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Tm(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Xm(a,i);Ym(i);l=k;return}}function Vm(a){a=a|0;return 357913941}function Wm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Ym(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Zm(a){a=a|0;an(a);return}function _m(a){a=a|0;$m(a+24|0);return}function $m(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function an(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,bn()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function bn(){return 1320}function cn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=dn(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=en(b,e)|0;l=d;return b|0}function dn(a){a=a|0;return (c[(Qm()|0)+24>>2]|0)+(a*12|0)|0}function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;kb[d&31](e,a);e=fn(e)|0;l=f;return e|0}function fn(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(gn()|0)|0;if(!d)a=jn(a)|0;else{ci(b,d);di(c,b);hn(a,c);a=fi(b)|0}l=e;return a|0}function gn(){var b=0;if(!(a[8976]|0)){un(9872);Fa(25,9872,o|0)|0;b=8976;c[b>>2]=1;c[b+4>>2]=0}return 9872}function hn(a,b){a=a|0;b=b|0;on(b,a,a+8|0)|0;return}function jn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|0;h=d;e=lw(8)|0;b=e;i=zA(16)|0;c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];g=b+4|0;c[g>>2]=i;a=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];kn(a,g,f);c[e>>2]=a;l=d;return b|0}function kn(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=1288;c[d+12>>2]=b;c[a+4>>2]=d;return}function ln(a){a=a|0;tA(a);BA(a);return}function mn(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}function nn(a){a=a|0;BA(a);return}function on(a,b,d){a=a|0;b=b|0;d=d|0;b=pn(c[a>>2]|0,b,d)|0;d=a+4|0;c[(c[d>>2]|0)+8>>2]=b;return c[(c[d>>2]|0)+8>>2]|0}function pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wy(f);a=lg(a)|0;d=qn(a,c[b>>2]|0,+h[d>>3])|0;Yy(f);l=e;return d|0}function qn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=og(rn()|0)|0;b=qg(b)|0;return xa(0,d|0,a|0,b|0,+(+pg(c)))|0}function rn(){var b=0;if(!(a[8968]|0)){sn(9860);b=8968;c[b>>2]=1;c[b+4>>2]=0}return 9860}function sn(a){a=a|0;Ag(a,tn()|0,2);return}function tn(){return 1308}function un(a){a=a|0;xi(a);return}function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];wn(a,d,f,1);l=e;return}function wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=xn()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=yn(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,zn(g,e)|0,e);l=f;return}function xn(){var b=0,d=0;if(!(a[8984]|0)){Gn(9916);Fa(38,9916,o|0)|0;d=8984;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9916)|0)){b=9916;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Gn(9916)}return 9916}function yn(a){a=a|0;return 0}function zn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=xn()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];An(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Bn(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Cn(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Dn(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];An(g,e,d);c[j>>2]=(c[j>>2]|0)+12;En(a,i);Fn(i);l=k;return}}function Cn(a){a=a|0;return 357913941}\nfunction Dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function En(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Fn(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Gn(a){a=a|0;Jn(a);return}function Hn(a){a=a|0;In(a+24|0);return}function In(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Jn(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,Kn()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Kn(){return 1324}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=Mn(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];d=Nn(b,f,d)|0;l=e;return d|0}function Mn(a){a=a|0;return (c[(xn()|0)+24>>2]|0)+(a*12|0)|0}function Nn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+32|0;f=h;g=h+16|0;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ti(g,d);g=Ui(g,d)|0;zb[e&15](f,a,g);g=fn(f)|0;l=h;return g|0}function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Pn(a,d,f,1);l=e;return}function Pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Qn()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Rn(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Sn(g,e)|0,e);l=f;return}function Qn(){var b=0,d=0;if(!(a[8992]|0)){Zn(9952);Fa(39,9952,o|0)|0;d=8992;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9952)|0)){b=9952;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Zn(9952)}return 9952}function Rn(a){a=a|0;return 0}function Sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Qn()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Tn(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Un(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Tn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Un(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Vn(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Wn(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Tn(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Xn(a,i);Yn(i);l=k;return}}function Vn(a){a=a|0;return 357913941}function Wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Yn(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Zn(a){a=a|0;ao(a);return}function _n(a){a=a|0;$n(a+24|0);return}function $n(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function ao(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,9,b,bo()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function bo(){return 1332}function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=eo(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];b=fo(b,e)|0;l=d;return b|0}function eo(a){a=a|0;return (c[(Qn()|0)+24>>2]|0)+(a*12|0)|0}function fo(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;return wg(lb[d&31](a)|0)|0}function go(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];ho(a,d,f,0);l=e;return}function ho(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=io()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=jo(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,ko(g,e)|0,e);l=f;return}function io(){var b=0,d=0;if(!(a[9e3]|0)){ro(9988);Fa(40,9988,o|0)|0;d=9e3;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(9988)|0)){b=9988;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));ro(9988)}return 9988}function jo(a){a=a|0;return 0}function ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=io()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];lo(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{mo(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function mo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=no(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;oo(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];lo(g,e,d);c[j>>2]=(c[j>>2]|0)+12;po(a,i);qo(i);l=k;return}}function no(a){a=a|0;return 357913941}function oo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function po(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function qo(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function ro(a){a=a|0;uo(a);return}function so(a){a=a|0;to(a+24|0);return}function to(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function uo(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,vo()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function vo(){return 1336}function wo(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=xo(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];yo(b,f,d);l=e;return}function xo(a){a=a|0;return (c[(io()|0)+24>>2]|0)+(a*12|0)|0}function yo(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ri(f,d);d=+Si(f,d);hb[e&31](a,d);l=g;return}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Ao(a,d,f,0);l=e;return}function Ao(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Bo()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Co(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Do(g,e)|0,e);l=f;return}function Bo(){var b=0,d=0;if(!(a[9008]|0)){Ko(10024);Fa(41,10024,o|0)|0;d=9008;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10024)|0)){b=10024;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ko(10024)}return 10024}function Co(a){a=a|0;return 0}function Do(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Bo()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Eo(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Fo(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Fo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Go(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Ho(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Eo(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Io(a,i);Jo(i);l=k;return}}function Go(a){a=a|0;return 357913941}function Ho(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Io(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Jo(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Ko(a){a=a|0;No(a);return}function Lo(a){a=a|0;Mo(a+24|0);return}function Mo(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function No(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,Oo()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Oo(){return 1344}function Po(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=Qo(a)|0;a=c[i+4>>2]|0;c[h>>2]=c[i>>2];c[h+4>>2]=a;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];Ro(b,g,d,e);l=f;return}function Qo(a){a=a|0;return (c[(Bo()|0)+24>>2]|0)+(a*12|0)|0}function Ro(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+1|0;h=i;f=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)f=c[(c[a>>2]|0)+f>>2]|0;Ti(g,d);g=Ui(g,d)|0;Ri(h,e);e=+Si(h,e);Bb[f&15](a,g,e);l=i;return}function So(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];To(a,d,f,0);l=e;return}function To(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Uo()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Vo(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Wo(g,e)|0,e);l=f;return}function Uo(){var b=0,d=0;if(!(a[9016]|0)){bp(10060);Fa(42,10060,o|0)|0;d=9016;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10060)|0)){b=10060;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));bp(10060)}return 10060}function Vo(a){a=a|0;return 0}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Uo()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Xo(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Yo(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Xo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Zo(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;_o(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Xo(g,e,d);c[j>>2]=(c[j>>2]|0)+12;$o(a,i);ap(i);l=k;return}}function Zo(a){a=a|0;return 357913941}function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function $o(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ap(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function bp(a){a=a|0;ep(a);return}function cp(a){a=a|0;dp(a+24|0);return}function dp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function ep(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,fp()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function fp(){return 1356}function gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=hp(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];ip(b,f,d);l=e;return}function hp(a){a=a|0;return (c[(Uo()|0)+24>>2]|0)+(a*12|0)|0}function ip(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Ti(f,d);f=Ui(f,d)|0;kb[e&31](a,f);l=g;return}function jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];kp(a,d,f,0);l=e;return}function kp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=lp()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=mp(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,np(g,e)|0,e);l=f;return}function lp(){var b=0,d=0;if(!(a[9024]|0)){up(10096);Fa(43,10096,o|0)|0;d=9024;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10096)|0)){b=10096;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));up(10096)}return 10096}function mp(a){a=a|0;return 0}function np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=lp()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];op(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{pp(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function op(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=qp(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;rp(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];op(g,e,d);c[j>>2]=(c[j>>2]|0)+12;sp(a,i);tp(i);l=k;return}}function qp(a){a=a|0;return 357913941}function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function sp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function tp(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function up(a){a=a|0;xp(a);return}function vp(a){a=a|0;wp(a+24|0);return}function wp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function xp(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,9,b,yp()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function yp(){return 1364}function zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e;h=Ap(a)|0;a=c[h+4>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=a;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Bp(b,f,d);l=e;return}function Ap(a){a=a|0;return (c[(lp()|0)+24>>2]|0)+(a*12|0)|0}function Bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)e=c[(c[a>>2]|0)+e>>2]|0;Cp(f,d);f=Dp(f,d)|0;kb[e&31](a,f);l=g;return}function Cp(a,b){a=a|0;b=b|0;return}function Dp(a,b){a=a|0;b=b|0;return Ep(b)|0}function Ep(a){a=a|0;return a|0}function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+8|0;g=e;i=c[d>>2]|0;h=c[d+4>>2]|0;d=Ah(b)|0;c[g>>2]=i;c[g+4>>2]=h;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Gp(a,d,f,0);l=e;return}function Gp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;m=f+8|0;i=f;k=c[d>>2]|0;j=c[d+4>>2]|0;h=c[a>>2]|0;a=Hp()|0;c[m>>2]=k;c[m+4>>2]=j;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];d=Ip(g)|0;c[i>>2]=k;c[i+4>>2]=j;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];Fh(h,b,a,d,Jp(g,e)|0,e);l=f;return}function Hp(){var b=0,d=0;if(!(a[9032]|0)){Qp(10132);Fa(44,10132,o|0)|0;d=9032;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10132)|0)){b=10132;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Qp(10132)}return 10132}function Ip(a){a=a|0;return 0}function Jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;f=m+24|0;h=m+16|0;i=m;j=m+8|0;g=c[a>>2]|0;e=c[a+4>>2]|0;c[i>>2]=g;c[i+4>>2]=e;n=Hp()|0;k=n+24|0;a=Jh(b,4)|0;c[j>>2]=a;b=n+28|0;d=c[b>>2]|0;if(d>>>0<(c[n+32>>2]|0)>>>0){c[h>>2]=g;c[h+4>>2]=e;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Kp(d,f,a);a=(c[b>>2]|0)+12|0;c[b>>2]=a}else{Lp(k,i,j);a=c[b>>2]|0}l=m;return ((a-(c[k>>2]|0)|0)/12|0)+-1|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[a+8>>2]=d;return}function Lp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+48|0;e=k+32|0;h=k+24|0;i=k;j=a+4|0;f=(((c[j>>2]|0)-(c[a>>2]|0)|0)/12|0)+1|0;g=Mp(a)|0;if(g>>>0<f>>>0)sA(a);else{m=c[a>>2]|0;o=((c[a+8>>2]|0)-m|0)/12|0;n=o<<1;Np(i,o>>>0<g>>>1>>>0?(n>>>0<f>>>0?f:n):g,((c[j>>2]|0)-m|0)/12|0,a+8|0);j=i+8|0;g=c[j>>2]|0;f=c[b+4>>2]|0;d=c[d>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Kp(g,e,d);c[j>>2]=(c[j>>2]|0)+12;Op(a,i);Pp(i);l=k;return}}function Mp(a){a=a|0;return 357913941}function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>357913941)Qa();else{f=zA(b*12|0)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d*12|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b*12|0);return}function Op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(((f|0)/-12|0)*12|0)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Pp(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~(((e+-12-b|0)>>>0)/12|0)*12|0);a=c[a>>2]|0;if(a|0)BA(a);return}function Qp(a){a=a|0;Tp(a);return}function Rp(a){a=a|0;Sp(a+24|0);return}function Sp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~(((b+-12-e|0)>>>0)/12|0)*12|0);BA(d)}return}function Tp(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,24,b,Up()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Up(){return 1388}function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d;g=Wp(a)|0;a=c[g+4>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=a;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];Xp(b,e);l=d;return}function Wp(a){a=a|0;return (c[(Hp()|0)+24>>2]|0)+(a*12|0)|0}function Xp(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1)|0;if(b&1)d=c[(c[a>>2]|0)+d>>2]|0;jb[d&127](a);return}function Yp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=Zp()|0;a=_p(d)|0;Fh(g,b,f,a,$p(d,e)|0,e);return}function Zp(){var b=0,d=0;if(!(a[9040]|0)){gq(10168);Fa(45,10168,o|0)|0;d=9040;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10168)|0)){b=10168;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));gq(10168)}return 10168}function _p(a){a=a|0;return a|0}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Zp()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){aq(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{bq(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function aq(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=cq(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;dq(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;aq(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;eq(a,f);fq(f);l=i;return}}function cq(a){a=a|0;return 536870911}function dq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function eq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function fq(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function gq(a){a=a|0;jq(a);return}function hq(a){a=a|0;iq(a+24|0);return}function iq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function jq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,25,b,El()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function kq(a,b){a=a|0;b=b|0;mq(c[(lq(a)|0)>>2]|0,b);return}function lq(a){a=a|0;return (c[(Zp()|0)+24>>2]|0)+(a<<3)|0}function mq(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Il(d,b);b=Jl(d,b)|0;jb[a&127](b);l=c;return}function nq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=oq()|0;a=pq(d)|0;Fh(g,b,f,a,qq(d,e)|0,e);return}function oq(){var b=0,d=0;if(!(a[9048]|0)){xq(10204);Fa(46,10204,o|0)|0;d=9048;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10204)|0)){b=10204;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));xq(10204)}return 10204}function pq(a){a=a|0;return a|0}function qq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=oq()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){rq(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{sq(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function rq(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=tq(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;uq(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;rq(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;vq(a,f);wq(f);l=i;return}}function tq(a){a=a|0;return 536870911}function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function vq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function wq(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function xq(a){a=a|0;Aq(a);return}function yq(a){a=a|0;zq(a+24|0);return}function zq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Aq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,17,b,Tk()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Bq(a){a=a|0;return Dq(c[(Cq(a)|0)>>2]|0)|0}function Cq(a){a=a|0;return (c[(oq()|0)+24>>2]|0)+(a<<3)|0}function Dq(a){a=a|0;return Ck(wb[a&7]()|0)|0}function Eq(){var b=0;if(!(a[9064]|0)){Oq(10248);Fa(25,10248,o|0)|0;b=9064;c[b>>2]=1;c[b+4>>2]=0}return 10248}function Fq(a,b){a=a|0;b=b|0;c[a>>2]=Gq()|0;c[a+4>>2]=Hq()|0;c[a+12>>2]=b;c[a+8>>2]=Iq()|0;c[a+32>>2]=2;return}function Gq(){return 11752}function Hq(){return 1232}function Iq(){return Mq()|0}function Jq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){Lq(c);BA(c)}}else if(b|0){Oe(b);BA(b)}return}function Kq(a,b){a=a|0;b=b|0;return b&a|0}function Lq(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function Mq(){var b=0;if(!(a[9056]|0)){c[2560]=Nq()|0;c[2561]=0;b=9056;c[b>>2]=1;c[b+4>>2]=0}return 10240}function Nq(){return 0}function Oq(a){a=a|0;xi(a);return}function Pq(a){a=a|0;Qq(a,6092);Rq(a)|0;Sq(a)|0;return}function Qq(a,b){a=a|0;b=b|0;var d=0;d=gn()|0;c[a>>2]=d;qr(d,b);Jt(c[a>>2]|0);return}function Rq(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,er()|0);return a|0}function Sq(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Tq()|0);return a|0}function Tq(){var b=0;if(!(a[9072]|0)){Vq(10296);Fa(47,10296,o|0)|0;b=9072;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10296)|0))Vq(10296);return 10296}function Uq(a,b){a=a|0;b=b|0;Fh(a,0,b,0,0,0);return}function Vq(a){a=a|0;Yq(a);_q(a,9);return}function Wq(a){a=a|0;Xq(a+24|0);return}function Xq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Yq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,1,b,br()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Zq(a,b,c){a=a|0;b=b|0;c=+c;$q(a,b,c);return}function _q(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}function $q(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0,j=0;e=l;l=l+16|0;g=e+8|0;j=e+13|0;f=e;i=e+12|0;Ti(j,b);c[g>>2]=Ui(j,b)|0;Ri(i,d);h[f>>3]=+Si(i,d);ar(a,g,f);l=e;return}function ar(b,d,e){b=b|0;d=d|0;e=e|0;Hf(b+8|0,c[d>>2]|0,+h[e>>3]);a[b+24>>0]=1;return}function br(){return 1392}function cr(a,b){a=a|0;b=+b;return dr(a,b)|0}function dr(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;g=e+4|0;h=e+8|0;i=e;f=lw(8)|0;d=f;j=zA(16)|0;Ti(g,a);a=Ui(g,a)|0;Ri(h,b);Hf(j,a,+Si(h,b));h=d+4|0;c[h>>2]=j;a=zA(8)|0;h=c[h>>2]|0;c[i>>2]=0;c[g>>2]=c[i>>2];kn(a,h,g);c[f>>2]=a;l=e;return d|0}function er(){var b=0;if(!(a[9080]|0)){fr(10332);Fa(48,10332,o|0)|0;b=9080;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10332)|0))fr(10332);return 10332}function fr(a){a=a|0;ir(a);_q(a,49);return}function gr(a){a=a|0;hr(a+24|0);return}function hr(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function ir(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,3,b,nr()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function jr(a){a=a|0;kr(a);return}function kr(a){a=a|0;lr(a);return}function lr(b){b=b|0;mr(b+8|0);a[b+24>>0]=1;return}function mr(a){a=a|0;c[a>>2]=0;h[a+8>>3]=0.0;return}function nr(){return 1412}function or(){return pr()|0}function pr(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d=lw(8)|0;a=d;e=zA(16)|0;mr(e);g=a+4|0;c[g>>2]=e;e=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];kn(e,g,f);c[d>>2]=e;l=b;return a|0}function qr(a,b){a=a|0;b=b|0;c[a>>2]=rr()|0;c[a+4>>2]=sr()|0;c[a+12>>2]=b;c[a+8>>2]=tr()|0;c[a+32>>2]=3;return}function rr(){return 11753}function sr(){return 1404}function tr(){return wr()|0}function ur(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){vr(c);BA(c)}}else if(b|0)BA(b);return}function vr(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function wr(){var b=0;if(!(a[9088]|0)){c[2592]=xr()|0;c[2593]=0;b=9088;c[b>>2]=1;c[b+4>>2]=0}return 10368}function xr(){return c[354]|0}function yr(a){a=a|0;zr(a,6098);Ar(a)|0;return}function zr(a,b){a=a|0;b=b|0;var d=0;d=ai()|0;c[a>>2]=d;Mr(d,b);Jt(c[a>>2]|0);return}function Ar(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Br()|0);return a|0}function Br(){var b=0;if(!(a[9096]|0)){Cr(10380);Fa(50,10380,o|0)|0;b=9096;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10380)|0))Cr(10380);return 10380}function Cr(a){a=a|0;Fr(a);_q(a,51);return}function Dr(a){a=a|0;Er(a+24|0);return}function Er(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Fr(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,4,b,Jr()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Gr(a){a=a|0;Hr(a);return}function Hr(a){a=a|0;Ir(a);return}function Ir(b){b=b|0;var d=0,e=0;d=b+8|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[b+56>>0]=1;return}function Jr(){return 1420}function Kr(){return Lr()|0}function Lr(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;a=h+4|0;b=h;d=lw(8)|0;e=d;f=zA(48)|0;g=f;i=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(i|0));g=e+4|0;c[g>>2]=f;i=zA(8)|0;g=c[g>>2]|0;c[b>>2]=0;c[a>>2]=c[b>>2];hi(i,g,a);c[d>>2]=i;l=h;return e|0}function Mr(a,b){a=a|0;b=b|0;c[a>>2]=Nr()|0;c[a+4>>2]=Or()|0;c[a+12>>2]=b;c[a+8>>2]=Pr()|0;c[a+32>>2]=4;return}function Nr(){return 11747}function Or(){return 1424}function Pr(){return wr()|0}function Qr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){Rr(c);BA(c)}}else if(b|0)BA(b);return}function Rr(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function Sr(a){a=a|0;Tr(a,6105);Ur(a)|0;Vr(a)|0;return}function Tr(a,b){a=a|0;b=b|0;var d=0;d=ws()|0;c[a>>2]=d;xs(d,b);Jt(c[a>>2]|0);return}function Ur(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,ks()|0);return a|0}function Vr(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Wr()|0);return a|0}function Wr(){var b=0;if(!(a[9104]|0)){Xr(10420);Fa(52,10420,o|0)|0;b=9104;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10420)|0))Xr(10420);return 10420}function Xr(a){a=a|0;_r(a);_q(a,1);return}function Yr(a){a=a|0;Zr(a+24|0);return}function Zr(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function _r(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,1,b,ds()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function $r(a,b,c){a=a|0;b=+b;c=+c;as(a,b,c);return}function as(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,i=0;d=l;l=l+32|0;f=d+8|0;i=d+17|0;e=d;g=d+16|0;Ri(i,b);h[f>>3]=+Si(i,b);Ri(g,c);h[e>>3]=+Si(g,c);bs(a,f,e);l=d;return}function bs(b,c,d){b=b|0;c=c|0;d=d|0;cs(b+8|0,+h[c>>3],+h[d>>3]);a[b+24>>0]=1;return}function cs(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function ds(){return 1460}function es(a,b){a=+a;b=+b;return fs(a,b)|0}function fs(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;h=e+4|0;i=e+8|0;j=e;f=lw(8)|0;d=f;g=zA(16)|0;Ri(h,a);a=+Si(h,a);Ri(i,b);cs(g,a,+Si(i,b));i=d+4|0;c[i>>2]=g;g=zA(8)|0;i=c[i>>2]|0;c[j>>2]=0;c[h>>2]=c[j>>2];gs(g,i,h);c[f>>2]=g;l=e;return d|0}function gs(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=1440;c[d+12>>2]=b;c[a+4>>2]=d;return}function hs(a){a=a|0;tA(a);BA(a);return}function is(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}function js(a){a=a|0;BA(a);return}function ks(){var b=0;if(!(a[9112]|0)){ls(10456);Fa(53,10456,o|0)|0;b=9112;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10456)|0))ls(10456);return 10456}function ls(a){a=a|0;os(a);_q(a,54);return}function ms(a){a=a|0;ns(a+24|0);return}function ns(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function os(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,5,b,ts()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function ps(a){a=a|0;qs(a);return}function qs(a){a=a|0;rs(a);return}function rs(b){b=b|0;ss(b+8|0);a[b+24>>0]=1;return}function ss(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}function ts(){return 1480}function us(){return vs()|0}function vs(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d=lw(8)|0;a=d;e=zA(16)|0;ss(e);g=a+4|0;c[g>>2]=e;e=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];gs(e,g,f);c[d>>2]=e;l=b;return a|0}function ws(){var b=0;if(!(a[9120]|0)){Ds(10492);Fa(25,10492,o|0)|0;b=9120;c[b>>2]=1;c[b+4>>2]=0}return 10492}function xs(a,b){a=a|0;b=b|0;c[a>>2]=ys()|0;c[a+4>>2]=zs()|0;c[a+12>>2]=b;c[a+8>>2]=As()|0;c[a+32>>2]=5;return}function ys(){return 11743}function zs(){return 1472}function As(){return wr()|0}function Bs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){Cs(c);BA(c)}}else if(b|0)BA(b);return}function Cs(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function Ds(a){a=a|0;xi(a);return}function Es(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=Fs(c)|0;c=Gs(c,0)|0;$t(a,b,c,Hs()|0,0);return}function Fs(a){a=a|0;return a|0}function Gs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Hs()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){Ps(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{Qs(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function Hs(){var b=0,d=0;if(!(a[9128]|0)){Is(10536);Fa(55,10536,o|0)|0;d=9128;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10536)|0)){b=10536;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Is(10536)}return 10536}function Is(a){a=a|0;Ls(a);return}function Js(a){a=a|0;Ks(a+24|0);return}function Ks(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Ls(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,18,b,kl()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Ms(a){a=a|0;return Os(c[(Ns(a)|0)>>2]|0)|0}function Ns(a){a=a|0;return (c[(Hs()|0)+24>>2]|0)+(a<<3)|0}function Os(a){a=a|0;return ol(wb[a&7]()|0)|0}function Ps(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=Rs(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;Ss(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;Ps(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;Ts(a,f);Us(f);l=i;return}}function Rs(a){a=a|0;return 536870911}function Ss(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Us(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function Vs(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=Ws(c)|0;c=Xs(c,0)|0;$t(a,b,c,Ys()|0,0);return}function Ws(a){a=a|0;return a|0}function Xs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Ys()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){ft(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{gt(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function Ys(){var b=0,d=0;if(!(a[9136]|0)){Zs(10572);Fa(56,10572,o|0)|0;d=9136;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10572)|0)){b=10572;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Zs(10572)}return 10572}function Zs(a){a=a|0;at(a);return}function _s(a){a=a|0;$s(a+24|0);return}function $s(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function at(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,10,b,bt()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function bt(){return 1484}function ct(a,b){a=a|0;b=b|0;return et(c[(dt(a)|0)>>2]|0,b)|0}function dt(a){a=a|0;return (c[(Ys()|0)+24>>2]|0)+(a<<3)|0}function et(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Ti(d,b);b=Ui(d,b)|0;b=oj(lb[a&31](b)|0)|0;l=c;return b|0}function ft(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function gt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=ht(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;it(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;ft(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;jt(a,f);kt(f);l=i;return}}function ht(a){a=a|0;return 536870911}function it(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function jt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function kt(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function lt(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=mt(c)|0;c=nt(c,0)|0;$t(a,b,c,ot()|0,0);return}function mt(a){a=a|0;return a|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=ot()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){xt(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{yt(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function ot(){var b=0,d=0;if(!(a[9144]|0)){pt(10608);Fa(57,10608,o|0)|0;d=9144;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10608)|0)){b=10608;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));pt(10608)}return 10608}function pt(a){a=a|0;st(a);return}function qt(a){a=a|0;rt(a+24|0);return}function rt(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function st(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,10,b,tt()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function tt(){return 1492}function ut(a,b,d){a=a|0;b=b|0;d=d|0;wt(c[(vt(a)|0)>>2]|0,b,d);return}function vt(a){a=a|0;return (c[(ot()|0)+24>>2]|0)+(a<<3)|0}function wt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+1|0;e=d;Ti(f,b);b=Ui(f,b)|0;Ij(e,c);c=Jj(e,c)|0;kb[a&31](b,c);l=d;return}function xt(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function yt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=zt(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;At(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;xt(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;Bt(a,f);Ct(f);l=i;return}}function zt(a){a=a|0;return 536870911}function At(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function Bt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Ct(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function Dt(){Et();return}function Et(){Ft(10644);return}function Ft(a){a=a|0;Gt(a,6186);return}function Gt(a,b){a=a|0;b=b|0;var d=0;d=Ht()|0;c[a>>2]=d;It(d,b);Jt(c[a>>2]|0);return}function Ht(){var b=0;if(!(a[9152]|0)){Tt(10652);Fa(25,10652,o|0)|0;b=9152;c[b>>2]=1;c[b+4>>2]=0}return 10652}function It(a,b){a=a|0;b=b|0;c[a>>2]=Ot()|0;c[a+4>>2]=Pt()|0;c[a+12>>2]=b;c[a+8>>2]=Qt()|0;c[a+32>>2]=6;return}function Jt(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;Kt()|0;c[d>>2]=a;Lt(10648,d);l=b;return}function Kt(){if(!(a[11757]|0)){c[2662]=0;Fa(58,10648,o|0)|0;a[11757]=1}return 10648}function Lt(a,b){a=a|0;b=b|0;var d=0;d=zA(8)|0;c[d+4>>2]=c[b>>2];c[d>>2]=c[a>>2];c[a>>2]=d;return}function Mt(a){a=a|0;Nt(a);return}function Nt(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;BA(d)}while((b|0)!=0);c[a>>2]=0;return}function Ot(){return 11758}function Pt(){return 1504}function Qt(){return Mq()|0}function Rt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){St(c);BA(c)}}else if(b|0)BA(b);return}function St(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function Tt(a){a=a|0;xi(a);return}function Ut(a,b){a=a|0;b=b|0;var d=0,e=0;Kt()|0;d=c[2662]|0;a:do if(d|0){while(1){e=c[d+4>>2]|0;if(e|0?(Fz(Vt(e)|0,a)|0)==0:0)break;d=c[d>>2]|0;if(!d)break a}Wt(e,b)}while(0);return}function Vt(a){a=a|0;return c[a+12>>2]|0}function Wt(a,b){a=a|0;b=b|0;var d=0;a=a+36|0;d=c[a>>2]|0;if(d|0){Pe(d);BA(d)}d=zA(4)|0;hg(d,b);c[a>>2]=d;return}function Xt(){if(!(a[11759]|0)){c[2674]=0;Fa(59,10696,o|0)|0;a[11759]=1}return 10696}function Yt(){var b=0;if(!(a[11760]|0)){Zt();c[2675]=1512;a[11760]=1;b=1512}else b=c[2675]|0;return b|0}function Zt(){if(!(a[11784]|0)){a[11761]=Jh(Jh(8,0)|0,0)|0;a[11762]=Jh(Jh(0,0)|0,0)|0;a[11763]=Jh(Jh(0,16)|0,0)|0;a[11764]=Jh(Jh(8,0)|0,0)|0;a[11765]=Jh(Jh(0,0)|0,0)|0;a[11766]=Jh(Jh(8,0)|0,0)|0;a[11767]=Jh(Jh(0,0)|0,0)|0;a[11768]=Jh(Jh(8,0)|0,0)|0;a[11769]=Jh(Jh(0,0)|0,0)|0;a[11770]=Jh(Jh(8,0)|0,0)|0;a[11771]=Jh(Jh(0,0)|0,0)|0;a[11772]=Jh(Jh(0,0)|0,32)|0;a[11773]=Jh(Jh(0,0)|0,32)|0;a[11784]=1}return}function _t(){return 1580}function $t(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;m=g+16|0;k=g+12|0;j=g+8|0;i=g+4|0;h=g;c[m>>2]=a;c[k>>2]=b;c[j>>2]=d;c[i>>2]=e;c[h>>2]=f;Xt()|0;au(10696,m,k,j,i,h);l=g;return}function au(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=zA(24)|0;Ih(h+4|0,c[b>>2]|0,c[d>>2]|0,c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);c[h>>2]=c[a>>2];c[a>>2]=h;return}function bu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+20|0;r=u+8|0;s=u+4|0;t=u;b=c[b>>2]|0;if(b|0){p=q+4|0;j=q+8|0;k=r+4|0;m=r+8|0;n=r+8|0;o=q+8|0;do{h=b+4|0;i=cu(h)|0;if(i|0){f=du(i)|0;c[q>>2]=0;c[p>>2]=0;c[j>>2]=0;e=(eu(i)|0)+1|0;fu(q,e);if(e|0)while(1){e=e+-1|0;Qy(r,c[f>>2]|0);g=c[p>>2]|0;if(g>>>0<(c[o>>2]|0)>>>0){c[g>>2]=c[r>>2];c[p>>2]=(c[p>>2]|0)+4}else gu(q,r);if(!e)break;else f=f+4|0}e=hu(i)|0;c[r>>2]=0;c[k>>2]=0;c[m>>2]=0;a:do if(c[e>>2]|0){f=0;g=0;while(1){if((f|0)==(g|0))iu(r,e);else{c[f>>2]=c[e>>2];c[k>>2]=(c[k>>2]|0)+4}e=e+4|0;if(!(c[e>>2]|0))break a;f=c[k>>2]|0;g=c[n>>2]|0}}while(0);c[s>>2]=ju(h)|0;c[t>>2]=Sh(i)|0;ku(d,a,s,t,q,r);lu(r);mu(q)}b=c[b>>2]|0}while((b|0)!=0)}l=u;return}function cu(a){a=a|0;return c[a+12>>2]|0}function du(a){a=a|0;return c[a+12>>2]|0}function eu(a){a=a|0;return c[a+16>>2]|0}function fu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f;e=c[a>>2]|0;if((c[a+8>>2]|0)-e>>2>>>0<b>>>0){Tu(d,b,(c[a+4>>2]|0)-e>>2,a+8|0);Uu(a,d);Vu(d)}l=f;return}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=Pu(a)|0;if(g>>>0<f>>>0)sA(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Tu(d,k>>2>>>0<g>>>1>>>0?(j>>>0<f>>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Uu(a,d);Vu(d);l=h;return}}function hu(a){a=a|0;return c[a+8>>2]|0}function iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;d=h;e=a+4|0;f=((c[e>>2]|0)-(c[a>>2]|0)>>2)+1|0;g=Mu(a)|0;if(g>>>0<f>>>0)sA(a);else{i=c[a>>2]|0;k=(c[a+8>>2]|0)-i|0;j=k>>1;Qu(d,k>>2>>>0<g>>>1>>>0?(j>>>0<f>>>0?f:j):g,(c[e>>2]|0)-i>>2,a+8|0);g=d+8|0;c[c[g>>2]>>2]=c[b>>2];c[g>>2]=(c[g>>2]|0)+4;Ru(a,d);Su(d);l=h;return}}function ju(a){a=a|0;return c[a>>2]|0}function ku(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;nu(a,b,c,d,e,f);return}function lu(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-e|0)>>>2)<<2);BA(d)}return}function mu(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-e|0)>>>2)<<2);BA(d)}return}function nu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+48|0;m=h+40|0;i=h+32|0;n=h+24|0;j=h+12|0;k=h;Wy(i);a=lg(a)|0;c[n>>2]=c[b>>2];d=c[d>>2]|0;e=c[e>>2]|0;ou(j,f);pu(k,g);c[m>>2]=c[n>>2];qu(a,m,d,e,j,k);lu(k);mu(j);Yy(i);l=h;return}function ou(a,b){a=a|0;b=b|0;var d=0,e=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;d=b+4|0;e=(c[d>>2]|0)-(c[b>>2]|0)>>2;if(e|0){Nu(a,e);Ou(a,c[b>>2]|0,c[d>>2]|0,e)}return}function pu(a,b){a=a|0;b=b|0;var d=0,e=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;d=b+4|0;e=(c[d>>2]|0)-(c[b>>2]|0)>>2;if(e|0){Ku(a,e);Lu(a,c[b>>2]|0,c[d>>2]|0,e)}return}function qu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;m=h+28|0;n=h+24|0;i=h+12|0;j=h;k=og(ru()|0)|0;c[n>>2]=c[b>>2];c[m>>2]=c[n>>2];b=su(m)|0;d=tu(d)|0;e=uu(e)|0;c[i>>2]=c[f>>2];m=f+4|0;c[i+4>>2]=c[m>>2];n=f+8|0;c[i+8>>2]=c[n>>2];c[n>>2]=0;c[m>>2]=0;c[f>>2]=0;f=vu(i)|0;c[j>>2]=c[g>>2];m=g+4|0;c[j+4>>2]=c[m>>2];n=g+8|0;c[j+8>>2]=c[n>>2];c[n>>2]=0;c[m>>2]=0;c[g>>2]=0;za(0,k|0,a|0,b|0,d|0,e|0,f|0,wu(j)|0)|0;lu(j);mu(i);l=h;return}function ru(){var b=0;if(!(a[9168]|0)){Iu(10748);b=9168;c[b>>2]=1;c[b+4>>2]=0}return 10748}function su(a){a=a|0;return Au(a)|0}function tu(a){a=a|0;return yu(a)|0}function uu(a){a=a|0;return ol(a)|0}function vu(a){a=a|0;return zu(a)|0}function wu(a){a=a|0;return xu(a)|0}function xu(a){a=a|0;var b=0,d=0,e=0;e=(c[a+4>>2]|0)-(c[a>>2]|0)|0;d=e>>2;e=lw(e+4|0)|0;c[e>>2]=d;if(d|0){b=0;do{c[e+4+(b<<2)>>2]=yu(c[(c[a>>2]|0)+(b<<2)>>2]|0)|0;b=b+1|0}while((b|0)!=(d|0))}return e|0}function yu(a){a=a|0;return a|0}function zu(a){a=a|0;var b=0,d=0,e=0;e=(c[a+4>>2]|0)-(c[a>>2]|0)|0;d=e>>2;e=lw(e+4|0)|0;c[e>>2]=d;if(d|0){b=0;do{c[e+4+(b<<2)>>2]=Au((c[a>>2]|0)+(b<<2)|0)|0;b=b+1|0}while((b|0)!=(d|0))}return e|0}function Au(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(Bu()|0)|0;if(!d)a=Cu(a)|0;else{ci(b,d);di(c,b);Ty(a,c);a=fi(b)|0}l=e;return a|0}function Bu(){var b=0;if(!(a[9160]|0)){Hu(10704);Fa(25,10704,o|0)|0;b=9160;c[b>>2]=1;c[b+4>>2]=0}return 10704}function Cu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|0;h=d;e=lw(8)|0;b=e;i=zA(4)|0;c[i>>2]=c[a>>2];g=b+4|0;c[g>>2]=i;a=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];Du(a,g,f);c[e>>2]=a;l=d;return b|0}function Du(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=1664;c[d+12>>2]=b;c[a+4>>2]=d;return}function Eu(a){a=a|0;tA(a);BA(a);return}function Fu(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}function Gu(a){a=a|0;BA(a);return}function Hu(a){a=a|0;xi(a);return}function Iu(a){a=a|0;Ag(a,Ju()|0,5);return}function Ju(){return 1684}function Ku(a,b){a=a|0;b=b|0;var d=0;if((Mu(a)|0)>>>0<b>>>0)sA(a);if(b>>>0>1073741823)Qa();else{d=zA(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Lu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){KA(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(a>>>2<<2)}return}function Mu(a){a=a|0;return 1073741823}function Nu(a,b){a=a|0;b=b|0;var d=0;if((Pu(a)|0)>>>0<b>>>0)sA(a);if(b>>>0>1073741823)Qa();else{d=zA(b<<2)|0;c[a+4>>2]=d;c[a>>2]=d;c[a+8>>2]=d+(b<<2);return}}function Ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0){KA(c[e>>2]|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+(a>>>2<<2)}return}function Pu(a){a=a|0;return 1073741823}function Qu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823)Qa();else{f=zA(b<<2)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<2)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<2);return}function Ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Su(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);a=c[a>>2]|0;if(a|0)BA(a);return}function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>1073741823)Qa();else{f=zA(b<<2)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<2)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<2);return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>2)<<2)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Vu(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);a=c[a>>2]|0;if(a|0)BA(a);return}function Wu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;m=r+20|0;n=r+12|0;k=r+16|0;o=r+4|0;p=r;q=r+8|0;i=Yt()|0;g=c[i>>2]|0;h=c[g>>2]|0;if(h|0){j=c[i+8>>2]|0;i=c[i+4>>2]|0;while(1){Qy(m,h);Xu(a,m,i,j);g=g+4|0;h=c[g>>2]|0;if(!h)break;else{j=j+1|0;i=i+1|0}}}g=_t()|0;h=c[g>>2]|0;if(h|0)do{Qy(m,h);c[n>>2]=c[g+4>>2];Yu(b,m,n);g=g+8|0;h=c[g>>2]|0}while((h|0)!=0);g=c[(Kt()|0)>>2]|0;if(g|0)do{b=c[g+4>>2]|0;Qy(m,c[(Zu(b)|0)>>2]|0);c[n>>2]=Vt(b)|0;_u(d,m,n);g=c[g>>2]|0}while((g|0)!=0);Qy(k,0);g=Xt()|0;c[m>>2]=c[k>>2];bu(m,g,f);g=c[(Kt()|0)>>2]|0;if(g|0){a=m+4|0;b=m+8|0;d=m+8|0;do{j=c[g+4>>2]|0;Qy(n,c[(Zu(j)|0)>>2]|0);av(o,$u(j)|0);h=c[o>>2]|0;if(h|0){c[m>>2]=0;c[a>>2]=0;c[b>>2]=0;do{Qy(p,c[(Zu(c[h+4>>2]|0)|0)>>2]|0);i=c[a>>2]|0;if(i>>>0<(c[d>>2]|0)>>>0){c[i>>2]=c[p>>2];c[a>>2]=(c[a>>2]|0)+4}else gu(m,p);h=c[h>>2]|0}while((h|0)!=0);bv(e,n,m);mu(m)}c[q>>2]=c[n>>2];k=cv(j)|0;c[m>>2]=c[q>>2];bu(m,k,f);ui(o);g=c[g>>2]|0}while((g|0)!=0)}l=r;return}function Xu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qv(a,b,c,d);return}function Yu(a,b,c){a=a|0;b=b|0;c=c|0;pv(a,b,c);return}function Zu(a){a=a|0;return a|0}function _u(a,b,c){a=a|0;b=b|0;c=c|0;kv(a,b,c);return}function $u(a){a=a|0;return a+16|0}function av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g+8|0;d=g;c[a>>2]=0;e=c[b>>2]|0;c[f>>2]=e;c[d>>2]=a;d=iv(d)|0;if(e|0){e=zA(12)|0;h=(jv(f)|0)+4|0;a=c[h+4>>2]|0;b=e+4|0;c[b>>2]=c[h>>2];c[b+4>>2]=a;b=c[c[f>>2]>>2]|0;c[f>>2]=b;if(!b)a=e;else{b=e;while(1){a=zA(12)|0;j=(jv(f)|0)+4|0;i=c[j+4>>2]|0;h=a+4|0;c[h>>2]=c[j>>2];c[h+4>>2]=i;c[b>>2]=a;h=c[c[f>>2]>>2]|0;c[f>>2]=h;if(!h)break;else b=a}}c[a>>2]=c[d>>2];c[d>>2]=e}l=g;return}function bv(a,b,c){a=a|0;b=b|0;c=c|0;dv(a,b,c);return}function cv(a){a=a|0;return a+24|0}function dv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+32|0;h=e+24|0;f=e+16|0;i=e+12|0;g=e;Wy(f);a=lg(a)|0;c[i>>2]=c[b>>2];ou(g,d);c[h>>2]=c[i>>2];ev(a,h,g);mu(g);Yy(f);l=e;return}function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+32|0;h=e+16|0;i=e+12|0;f=e;g=og(fv()|0)|0;c[i>>2]=c[b>>2];c[h>>2]=c[i>>2];b=su(h)|0;c[f>>2]=c[d>>2];h=d+4|0;c[f+4>>2]=c[h>>2];i=d+8|0;c[f+8>>2]=c[i>>2];c[i>>2]=0;c[h>>2]=0;c[d>>2]=0;va(0,g|0,a|0,b|0,vu(f)|0)|0;mu(f);l=e;return}function fv(){var b=0;if(!(a[9176]|0)){gv(10760);b=9176;c[b>>2]=1;c[b+4>>2]=0}return 10760}function gv(a){a=a|0;Ag(a,hv()|0,2);return}function hv(){return 1740}function iv(a){a=a|0;return c[a>>2]|0}function jv(a){a=a|0;return c[a>>2]|0}function kv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;g=e+16|0;f=e+8|0;h=e;Wy(f);a=lg(a)|0;c[h>>2]=c[b>>2];d=c[d>>2]|0;c[g>>2]=c[h>>2];lv(a,g,d);Yy(f);l=e;return}function lv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;g=e+4|0;h=e;f=og(mv()|0)|0;c[h>>2]=c[b>>2];c[g>>2]=c[h>>2];b=su(g)|0;va(0,f|0,a|0,b|0,tu(d)|0)|0;l=e;return}function mv(){var b=0;if(!(a[9184]|0)){nv(10772);b=9184;c[b>>2]=1;c[b+4>>2]=0}return 10772}function nv(a){a=a|0;Ag(a,ov()|0,2);return}function ov(){return 1752}function pv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;g=e+16|0;f=e+8|0;h=e;Wy(f);a=lg(a)|0;c[h>>2]=c[b>>2];d=c[d>>2]|0;c[g>>2]=c[h>>2];lv(a,g,d);Yy(f);l=e;return}function qv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+32|0;i=g+16|0;h=g+8|0;j=g;Wy(h);b=lg(b)|0;c[j>>2]=c[d>>2];e=a[e>>0]|0;f=a[f>>0]|0;c[i>>2]=c[j>>2];rv(b,i,e,f);Yy(h);l=g;return}function rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;h=f+4|0;i=f;g=og(sv()|0)|0;c[i>>2]=c[b>>2];c[h>>2]=c[i>>2];b=su(h)|0;d=tv(d)|0;Ya(0,g|0,a|0,b|0,d|0,tv(e)|0)|0;l=f;return}function sv(){var b=0;if(!(a[9192]|0)){vv(10784);b=9192;c[b>>2]=1;c[b+4>>2]=0}return 10784}function tv(a){a=a|0;return uv(a)|0}function uv(a){a=a|0;return a&255|0}function vv(a){a=a|0;Ag(a,wv()|0,3);return}function wv(){return 1764}function xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+32|0;j=p+8|0;k=p+4|0;m=p+20|0;n=p;gk(b,0);f=Sy(d)|0;c[j>>2]=0;o=j+4|0;c[o>>2]=0;c[j+8>>2]=0;switch(f<<24>>24){case 0:{a[m>>0]=0;yv(k,e,m);zv(b,k)|0;Qe(k);break}case 8:{o=Ry(d)|0;a[m>>0]=8;Qy(n,c[o+4>>2]|0);Av(k,e,m,n,o+8|0);zv(b,k)|0;Qe(k);break}case 9:{h=Ry(d)|0;d=c[h+4>>2]|0;if(d|0){i=j+8|0;g=h+12|0;while(1){d=d+-1|0;Qy(k,c[g>>2]|0);f=c[o>>2]|0;if(f>>>0<(c[i>>2]|0)>>>0){c[f>>2]=c[k>>2];c[o>>2]=(c[o>>2]|0)+4}else gu(j,k);if(!d)break;else g=g+4|0}}a[m>>0]=9;Qy(n,c[h+8>>2]|0);Bv(k,e,m,n,j);zv(b,k)|0;Qe(k);break}default:{o=Ry(d)|0;a[m>>0]=f;Qy(n,c[o+4>>2]|0);Cv(k,e,m,n);zv(b,k)|0;Qe(k)}}mu(j);l=p;return}function yv(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wy(f);c=lg(c)|0;Qv(b,c,a[d>>0]|0);Yy(f);l=e;return}function zv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(d|0)Za(d|0);c[a>>2]=c[b>>2];c[b>>2]=0;return a|0}function Av(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=l;l=l+32|0;j=h+16|0;i=h+8|0;k=h;Wy(i);d=lg(d)|0;e=a[e>>0]|0;c[k>>2]=c[f>>2];g=c[g>>2]|0;c[j>>2]=c[k>>2];Mv(b,d,e,j,g);Yy(i);l=h;return}function Bv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;h=l;l=l+32|0;k=h+24|0;i=h+16|0;m=h+12|0;j=h;Wy(i);d=lg(d)|0;e=a[e>>0]|0;c[m>>2]=c[f>>2];ou(j,g);c[k>>2]=c[m>>2];Iv(b,d,e,k,j);mu(j);Yy(i);l=h;return}function Cv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+32|0;i=g+16|0;h=g+8|0;j=g;Wy(h);d=lg(d)|0;e=a[e>>0]|0;c[j>>2]=c[f>>2];c[i>>2]=c[j>>2];Dv(b,d,e,i);Yy(h);l=g;return}function Dv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+4|0;i=f;h=og(Ev()|0)|0;d=tv(d)|0;c[i>>2]=c[e>>2];c[g>>2]=c[i>>2];Fv(a,va(0,h|0,b|0,d|0,su(g)|0)|0);l=f;return}function Ev(){var b=0;if(!(a[9200]|0)){Gv(10796);b=9200;c[b>>2]=1;c[b+4>>2]=0}return 10796}function Fv(a,b){a=a|0;b=b|0;gk(a,b);return}function Gv(a){a=a|0;Ag(a,Hv()|0,2);return}function Hv(){return 1780}function Iv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=l;l=l+32|0;j=g+16|0;k=g+12|0;h=g;i=og(Jv()|0)|0;d=tv(d)|0;c[k>>2]=c[e>>2];c[j>>2]=c[k>>2];e=su(j)|0;c[h>>2]=c[f>>2];j=f+4|0;c[h+4>>2]=c[j>>2];k=f+8|0;c[h+8>>2]=c[k>>2];c[k>>2]=0;c[j>>2]=0;c[f>>2]=0;Fv(a,Ya(0,i|0,b|0,d|0,e|0,vu(h)|0)|0);mu(h);l=g;return}function Jv(){var b=0;if(!(a[9208]|0)){Kv(10808);b=9208;c[b>>2]=1;c[b+4>>2]=0}return 10808}function Kv(a){a=a|0;Ag(a,Lv()|0,3);return}function Lv(){return 1792}function Mv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;i=g+4|0;j=g;h=og(Nv()|0)|0;d=tv(d)|0;c[j>>2]=c[e>>2];c[i>>2]=c[j>>2];e=su(i)|0;Fv(a,Ya(0,h|0,b|0,d|0,e|0,uu(f)|0)|0);l=g;return}function Nv(){var b=0;if(!(a[9216]|0)){Ov(10820);b=9216;c[b>>2]=1;c[b+4>>2]=0}return 10820}function Ov(a){a=a|0;Ag(a,Pv()|0,3);return}function Pv(){return 1808}function Qv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=og(Rv()|0)|0;Fv(a,_a(0,d|0,b|0,tv(c)|0)|0);return}function Rv(){var b=0;if(!(a[9224]|0)){Sv(10832);b=9224;c[b>>2]=1;c[b+4>>2]=0}return 10832}function Sv(a){a=a|0;Ag(a,Tv()|0,1);return}function Tv(){return 1824}function Uv(){Vv();Wv();Xv();return}function Vv(){c[2712]=AA(65536)|0;return}function Wv(){sw(10896);return}function Xv(){Yv(10856);return}function Yv(a){a=a|0;Zv(a,6275);_v(a)|0;return}function Zv(a,b){a=a|0;b=b|0;var d=0;d=Bu()|0;c[a>>2]=d;mw(d,b);Jt(c[a>>2]|0);return}function _v(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,$v()|0);return a|0}function $v(){var b=0;if(!(a[9232]|0)){aw(10860);Fa(60,10860,o|0)|0;b=9232;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(10860)|0))aw(10860);return 10860}function aw(a){a=a|0;dw(a);_q(a,26);return}function bw(a){a=a|0;cw(a+24|0);return}function cw(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function dw(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,19,b,iw()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function ew(a,b){a=a|0;b=b|0;fw(a,b);return}function fw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+4|0;Ak(f,b);c[e>>2]=Bk(f,b)|0;gw(a,e);l=d;return}function gw(b,d){b=b|0;d=d|0;hw(b+4|0,c[d>>2]|0);a[b+8>>0]=1;return}function hw(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function iw(){return 1832}function jw(a){a=a|0;return kw(a)|0}function kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|0;h=d;e=lw(8)|0;b=e;i=zA(4)|0;Ak(f,a);hw(i,Bk(f,a)|0);g=b+4|0;c[g>>2]=i;a=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];Du(a,g,f);c[e>>2]=a;l=d;return b|0}function lw(a){a=a|0;var b=0,d=0;a=a+7&-8;if(a>>>0<=32768?(b=c[2711]|0,a>>>0<=(65536-b|0)>>>0):0){d=(c[2712]|0)+b|0;c[2711]=b+a;a=d}else{a=AA(a+8|0)|0;c[a>>2]=c[2713];c[2713]=a;a=a+8|0}return a|0}function mw(a,b){a=a|0;b=b|0;c[a>>2]=nw()|0;c[a+4>>2]=ow()|0;c[a+12>>2]=b;c[a+8>>2]=pw()|0;c[a+32>>2]=7;return}function nw(){return 11788}function ow(){return 1840}function pw(){return wr()|0}function qw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){rw(c);BA(c)}}else if(b|0)BA(b);return}function rw(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function sw(a){a=a|0;tw(a,6283);uw(a)|0;vw(a,6289,27)|0;ww(a,6300,1)|0;xw(a,6308,11)|0;yw(a,6318,20)|0;Aw(a,6325,28)|0;return}function tw(a,b){a=a|0;b=b|0;var d=0;d=Iy()|0;c[a>>2]=d;Jy(d,b);Jt(c[a>>2]|0);return}function uw(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,ty()|0);return a|0}function vw(a,b,c){a=a|0;b=b|0;c=c|0;_x(a,Ah(b)|0,c,0);return a|0}function ww(a,b,c){a=a|0;b=b|0;c=c|0;Ix(a,Ah(b)|0,c,0);return a|0}function xw(a,b,c){a=a|0;b=b|0;c=c|0;jx(a,Ah(b)|0,c,0);return a|0}function yw(a,b,c){a=a|0;b=b|0;c=c|0;Tw(a,Ah(b)|0,c,0);return a|0}function zw(a,b){a=a|0;b=b|0;var d=0,e=0;a:while(1){d=c[2713]|0;while(1){if((d|0)==(b|0))break a;e=c[d>>2]|0;c[2713]=e;if(!d)d=e;else break}BA(d)}c[2711]=a;return}function Aw(a,b,c){a=a|0;b=b|0;c=c|0;Bw(a,Ah(b)|0,c,0);return a|0}function Bw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=Cw()|0;a=Dw(d)|0;Fh(g,b,f,a,Ew(d,e)|0,e);return}function Cw(){var b=0,d=0;if(!(a[9240]|0)){Lw(10900);Fa(61,10900,o|0)|0;d=9240;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10900)|0)){b=10900;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Lw(10900)}return 10900}function Dw(a){a=a|0;return a|0}function Ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Cw()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){Fw(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{Gw(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=Hw(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;Iw(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;Fw(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;Jw(a,f);Kw(f);l=i;return}}function Hw(a){a=a|0;return 536870911}function Iw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function Jw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Kw(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function Lw(a){a=a|0;Ow(a);return}function Mw(a){a=a|0;Nw(a+24|0);return}function Nw(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Ow(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,12,b,Pw()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Pw(){return 1848}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;Sw(c[(Rw(a)|0)>>2]|0,b,d);return}function Rw(a){a=a|0;return (c[(Cw()|0)+24>>2]|0)+(a<<3)|0}function Sw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+1|0;e=d;Ak(f,b);b=Bk(f,b)|0;Ak(e,c);c=Bk(e,c)|0;kb[a&31](b,c);l=d;return}function Tw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=Uw()|0;a=Vw(d)|0;Fh(g,b,f,a,Ww(d,e)|0,e);return}function Uw(){var b=0,d=0;if(!(a[9248]|0)){bx(10936);Fa(62,10936,o|0)|0;d=9248;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10936)|0)){b=10936;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));bx(10936)}return 10936}function Vw(a){a=a|0;return a|0}function Ww(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Uw()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){Xw(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{Yw(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function Xw(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Yw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=Zw(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;_w(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;Xw(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;$w(a,f);ax(f);l=i;return}}function Zw(a){a=a|0;return 536870911}function _w(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function $w(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function ax(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function bx(a){a=a|0;ex(a);return}function cx(a){a=a|0;dx(a+24|0);return}function dx(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function ex(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,11,b,fx()|0,1);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function fx(){return 1860}function gx(a,b){a=a|0;b=b|0;return ix(c[(hx(a)|0)>>2]|0,b)|0}function hx(a){a=a|0;return (c[(Uw()|0)+24>>2]|0)+(a<<3)|0}function ix(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Ak(d,b);b=Bk(d,b)|0;b=ol(lb[a&31](b)|0)|0;l=c;return b|0}function jx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=kx()|0;a=lx(d)|0;Fh(g,b,f,a,mx(d,e)|0,e);return}function kx(){var b=0,d=0;if(!(a[9256]|0)){tx(10972);Fa(63,10972,o|0)|0;d=9256;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(10972)|0)){b=10972;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));tx(10972)}return 10972}function lx(a){a=a|0;return a|0}function mx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=kx()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){nx(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{ox(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function nx(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function ox(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=px(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;qx(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;nx(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;rx(a,f);sx(f);l=i;return}}function px(a){a=a|0;return 536870911}function qx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function rx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function sx(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function tx(a){a=a|0;wx(a);return}function ux(a){a=a|0;vx(a+24|0);return}function vx(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function wx(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,7,b,xx()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function xx(){return 1868}function yx(a,b,d){a=a|0;b=b|0;d=d|0;return Ax(c[(zx(a)|0)>>2]|0,b,d)|0}function zx(a){a=a|0;return (c[(kx()|0)+24>>2]|0)+(a<<3)|0}function Ax(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+32|0;h=e+12|0;g=e+8|0;i=e;j=e+16|0;f=e+4|0;Bx(j,b);Cx(i,j,b);ck(f,d);d=dk(f,d)|0;c[h>>2]=c[i>>2];zb[a&15](g,h,d);d=Dx(g)|0;Qe(g);ek(f);l=e;return d|0}function Bx(a,b){a=a|0;b=b|0;return}function Cx(a,b,c){a=a|0;b=b|0;c=c|0;Ex(a,c);return}function Dx(a){a=a|0;return lg(a)|0}function Ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=f;e=b;if(!(e&1))c[a>>2]=c[b>>2];else{Fx(d,0);Ha(e|0,d|0)|0;Gx(a,d);Hx(d)}l=f;return}function Fx(b,d){b=b|0;d=d|0;vg(b,d);c[b+4>>2]=0;a[b+8>>0]=0;return}function Gx(a,b){a=a|0;b=b|0;c[a>>2]=c[b+4>>2];return}function Hx(b){b=b|0;a[b+8>>0]=0;return}function Ix(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=Jx()|0;a=Kx(d)|0;Fh(g,b,f,a,Lx(d,e)|0,e);return}function Jx(){var b=0,d=0;if(!(a[9264]|0)){Sx(11008);Fa(64,11008,o|0)|0;d=9264;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(11008)|0)){b=11008;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Sx(11008)}return 11008}function Kx(a){a=a|0;return a|0}function Lx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=Jx()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){Mx(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{Nx(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function Mx(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function Nx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=Ox(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;Px(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;Mx(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;Qx(a,f);Rx(f);l=i;return}}function Ox(a){a=a|0;return 536870911}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function Qx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function Rx(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function Sx(a){a=a|0;Vx(a);return}function Tx(a){a=a|0;Ux(a+24|0);return}function Ux(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function Vx(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,1,b,Wx()|0,5);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function Wx(){return 1880}function Xx(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;Zx(c[(Yx(a)|0)>>2]|0,b,d,e,f,g);return}function Yx(a){a=a|0;return (c[(Jx()|0)+24>>2]|0)+(a<<3)|0}function Zx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;ck(h,b);b=dk(h,b)|0;ck(i,c);c=dk(i,c)|0;ck(j,d);d=dk(j,d)|0;ck(k,e);e=dk(k,e)|0;ck(m,f);f=dk(m,f)|0;gb[a&1](b,c,d,e,f);ek(m);ek(k);ek(j);ek(i);ek(h);l=g;return}function _x(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=$x()|0;a=ay(d)|0;Fh(g,b,f,a,by(d,e)|0,e);return}function $x(){var b=0,d=0;if(!(a[9272]|0)){iy(11044);Fa(65,11044,o|0)|0;d=9272;c[d>>2]=1;c[d+4>>2]=0}if(!(Sh(11044)|0)){b=11044;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));iy(11044)}return 11044}function ay(a){a=a|0;return a|0}function by(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;f=i;g=i+4|0;c[f>>2]=a;j=$x()|0;h=j+24|0;b=Jh(b,4)|0;c[g>>2]=b;d=j+28|0;e=c[d>>2]|0;if(e>>>0<(c[j+32>>2]|0)>>>0){cy(e,a,b);b=(c[d>>2]|0)+8|0;c[d>>2]=b}else{dy(h,f,g);b=c[d>>2]|0}l=i;return (b-(c[h>>2]|0)>>3)+-1|0}function cy(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}function dy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+32|0;f=i;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>3)+1|0;e=ey(a)|0;if(e>>>0<h>>>0)sA(a);else{j=c[a>>2]|0;m=(c[a+8>>2]|0)-j|0;k=m>>2;fy(f,m>>3>>>0<e>>>1>>>0?(k>>>0<h>>>0?h:k):e,(c[g>>2]|0)-j>>3,a+8|0);h=f+8|0;cy(c[h>>2]|0,c[b>>2]|0,c[d>>2]|0);c[h>>2]=(c[h>>2]|0)+8;gy(a,f);hy(f);l=i;return}}function ey(a){a=a|0;return 536870911}function fy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16>>2]=e;do if(b)if(b>>>0>536870911)Qa();else{f=zA(b<<3)|0;break}else f=0;while(0);c[a>>2]=f;e=f+(d<<3)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[a+12>>2]=f+(b<<3);return}function gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0;g=b+4|0;f=(c[h>>2]|0)-e|0;d=(c[g>>2]|0)+(0-(f>>3)<<3)|0;c[g>>2]=d;if((f|0)>0){KA(d|0,e|0,f|0)|0;e=g;d=c[g>>2]|0}else e=g;g=c[a>>2]|0;c[a>>2]=d;c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;h=b+12|0;a=c[g>>2]|0;c[g>>2]=c[h>>2];c[h>>2]=a;c[b>>2]=c[e>>2];return}function hy(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);a=c[a>>2]|0;if(a|0)BA(a);return}function iy(a){a=a|0;ly(a);return}function jy(a){a=a|0;ky(a+24|0);return}function ky(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function ly(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,13,b,my()|0,2);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function my(){return 1904}function ny(a,b,d){a=a|0;b=b|0;d=d|0;py(c[(oy(a)|0)>>2]|0,b,d);return}function oy(a){a=a|0;return (c[($x()|0)+24>>2]|0)+(a<<3)|0}function py(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+4|0;e=d;qy(f,b);b=ry(f,b)|0;ck(e,c);c=dk(e,c)|0;kb[a&31](b,c);ek(e);l=d;return}function qy(a,b){a=a|0;b=b|0;return}function ry(a,b){a=a|0;b=b|0;return sy(b)|0}function sy(a){a=a|0;return a|0}function ty(){var b=0;if(!(a[9280]|0)){uy(11080);Fa(66,11080,o|0)|0;b=9280;c[b>>2]=1;c[b+4>>2]=0}if(!(Sh(11080)|0))uy(11080);return 11080}function uy(a){a=a|0;xy(a);_q(a,67);return}function vy(a){a=a|0;wy(a+24|0);return}function wy(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-e|0)>>>3)<<3);BA(d)}return}function xy(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,6,b,By()|0,0);c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=0;return}function yy(a){a=a|0;zy(a);return}function zy(a){a=a|0;Ay(a);return}function Ay(b){b=b|0;a[b+8>>0]=1;return}function By(){return 1944}function Cy(){return Dy()|0}function Dy(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d=lw(8)|0;a=d;g=a+4|0;c[g>>2]=zA(1)|0;e=zA(8)|0;g=c[g>>2]|0;c[h>>2]=0;c[f>>2]=c[h>>2];Ey(e,g,f);c[d>>2]=e;l=b;return a|0}function Ey(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=1924;c[d+12>>2]=b;c[a+4>>2]=d;return}function Fy(a){a=a|0;tA(a);BA(a);return}function Gy(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}function Hy(a){a=a|0;BA(a);return}function Iy(){var b=0;if(!(a[9288]|0)){Py(11116);Fa(25,11116,o|0)|0;b=9288;c[b>>2]=1;c[b+4>>2]=0}return 11116}function Jy(a,b){a=a|0;b=b|0;c[a>>2]=Ky()|0;c[a+4>>2]=Ly()|0;c[a+12>>2]=b;c[a+8>>2]=My()|0;c[a+32>>2]=8;return}function Ky(){return 11789}function Ly(){return 1948}function My(){return Mq()|0}function Ny(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c|0){Oy(c);BA(c)}}else if(b|0)BA(b);return}function Oy(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}function Py(a){a=a|0;xi(a);return}function Qy(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Ry(a){a=a|0;return c[a>>2]|0}function Sy(b){b=b|0;return a[c[b>>2]>>0]|0}function Ty(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[a>>2];Uy(b,e)|0;l=d;return}function Uy(a,b){a=a|0;b=b|0;var d=0;d=Vy(c[a>>2]|0,b)|0;b=a+4|0;c[(c[b>>2]|0)+8>>2]=d;return c[(c[b>>2]|0)+8>>2]|0}function Vy(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;Wy(e);a=lg(a)|0;b=Xy(a,c[b>>2]|0)|0;Yy(e);l=d;return b|0}function Wy(a){a=a|0;c[a>>2]=c[2711];c[a+4>>2]=c[2713];return}function Xy(a,b){a=a|0;b=b|0;var c=0;c=og(Zy()|0)|0;return _a(0,c|0,a|0,uu(b)|0)|0}function Yy(a){a=a|0;zw(c[a>>2]|0,c[a+4>>2]|0);return}function Zy(){var b=0;if(!(a[9296]|0)){_y(11160);b=9296;c[b>>2]=1;c[b+4>>2]=0}return 11160}function _y(a){a=a|0;Ag(a,$y()|0,1);return}function $y(){return 1956}function az(){bz();return}function bz(){var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;o=s+4|0;p=s;Ca(65536,10844,c[2712]|0,10852);f=Yt()|0;e=c[f>>2]|0;b=c[e>>2]|0;if(b|0){g=c[f+8>>2]|0;f=c[f+4>>2]|0;while(1){Ja(b|0,d[f>>0]|0|0,a[g>>0]|0);e=e+4|0;b=c[e>>2]|0;if(!b)break;else{g=g+1|0;f=f+1|0}}}b=_t()|0;e=c[b>>2]|0;if(e|0)do{Ka(e|0,c[b+4>>2]|0);b=b+8|0;e=c[b>>2]|0}while((e|0)!=0);Ka(cz()|0,6398);n=Kt()|0;b=c[n>>2]|0;a:do if(b|0){do{dz(c[b+4>>2]|0);b=c[b>>2]|0}while((b|0)!=0);b=c[n>>2]|0;if(b|0){m=n;do{while(1){h=b;b=c[b>>2]|0;h=c[h+4>>2]|0;if(!(ez(h)|0))break;c[p>>2]=m;c[o>>2]=c[p>>2];fz(n,o)|0;if(!b)break a}gz(h);m=c[m>>2]|0;e=hz(h)|0;i=Sa()|0;j=l;l=l+((1*(e<<2)|0)+15&-16)|0;k=l;l=l+((1*(e<<2)|0)+15&-16)|0;e=c[($u(h)|0)>>2]|0;if(e|0){f=j;g=k;while(1){c[f>>2]=c[(Zu(c[e+4>>2]|0)|0)>>2];c[g>>2]=c[e+8>>2];e=c[e>>2]|0;if(!e)break;else{f=f+4|0;g=g+4|0}}}t=Zu(h)|0;e=iz(h)|0;f=hz(h)|0;g=jz(h)|0;Oa(t|0,e|0,j|0,k|0,f|0,g|0,Vt(h)|0);Ea(i|0)}while((b|0)!=0)}}while(0);b=c[(Xt()|0)>>2]|0;if(b|0)do{t=b+4|0;n=cu(t)|0;h=hu(n)|0;i=du(n)|0;j=(eu(n)|0)+1|0;k=kz(n)|0;m=lz(t)|0;n=Sh(n)|0;o=ju(t)|0;p=mz(t)|0;Ma(0,h|0,i|0,j|0,k|0,m|0,n|0,o|0,p|0,nz(t)|0);b=c[b>>2]|0}while((b|0)!=0);b=c[(Kt()|0)>>2]|0;b:do if(b|0){c:while(1){e=c[b+4>>2]|0;if(e|0?(q=c[(Zu(e)|0)>>2]|0,r=c[(cv(e)|0)>>2]|0,r|0):0){f=r;do{e=f+4|0;g=cu(e)|0;d:do if(g|0)switch(Sh(g)|0){case 0:break c;case 4:case 3:case 2:{k=hu(g)|0;m=du(g)|0;n=(eu(g)|0)+1|0;o=kz(g)|0;p=Sh(g)|0;t=ju(e)|0;Ma(q|0,k|0,m|0,n|0,o|0,0,p|0,t|0,mz(e)|0,nz(e)|0);break d}case 1:{j=hu(g)|0;k=du(g)|0;m=(eu(g)|0)+1|0;n=kz(g)|0;o=lz(e)|0;p=Sh(g)|0;t=ju(e)|0;Ma(q|0,j|0,k|0,m|0,n|0,o|0,p|0,t|0,mz(e)|0,nz(e)|0);break d}case 5:{n=hu(g)|0;o=du(g)|0;p=(eu(g)|0)+1|0;t=kz(g)|0;Ma(q|0,n|0,o|0,p|0,t|0,oz(g)|0,Sh(g)|0,0,0,0);break d}default:break d}while(0);f=c[f>>2]|0}while((f|0)!=0)}b=c[b>>2]|0;if(!b)break b}Qa()}while(0);Pa();l=s;return}function cz(){return 11746}function dz(b){b=b|0;a[b+40>>0]=0;return}function ez(b){b=b|0;return (a[b+40>>0]|0)!=0|0}function fz(a,b){a=a|0;b=b|0;b=pz(b)|0;a=c[b>>2]|0;c[b>>2]=c[a>>2];BA(a);return c[b>>2]|0}function gz(b){b=b|0;a[b+40>>0]=1;return}function hz(a){a=a|0;return c[a+20>>2]|0}function iz(a){a=a|0;return c[a+8>>2]|0}function jz(a){a=a|0;return c[a+32>>2]|0}function kz(a){a=a|0;return c[a+4>>2]|0}function lz(a){a=a|0;return c[a+4>>2]|0}function mz(a){a=a|0;return c[a+8>>2]|0}function nz(a){a=a|0;return c[a+16>>2]|0}function oz(a){a=a|0;return c[a+20>>2]|0}function pz(a){a=a|0;return c[a>>2]|0}function qz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;o=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;n=c[2793]|0;d=n>>>a;if(d&3|0){b=(d&1^1)+a|0;a=11212+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((a|0)==(g|0))c[2793]=n&~(1<<b);else{c[g+12>>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}m=c[2795]|0;if(k>>>0>m>>>0){if(d|0){b=2<<a;b=d<<a&(b|0-b);b=(b&0-b)+-1|0;h=b>>>12&16;b=b>>>h;d=b>>>5&8;b=b>>>d;f=b>>>2&4;b=b>>>f;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|h|f|a|e)+(b>>>e)|0;b=11212+(e<<1<<2)|0;a=b+8|0;f=c[a>>2]|0;h=f+8|0;d=c[h>>2]|0;if((b|0)==(d|0)){a=n&~(1<<e);c[2793]=a}else{c[d+12>>2]=b;c[a>>2]=d;a=n}g=(e<<3)-k|0;c[f+4>>2]=k|3;e=f+k|0;c[e+4>>2]=g|1;c[e+g>>2]=g;if(m|0){f=c[2798]|0;b=m>>>3;d=11212+(b<<1<<2)|0;b=1<<b;if(!(a&b)){c[2793]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=f;c[b+12>>2]=f;c[f+8>>2]=b;c[f+12>>2]=d}c[2795]=g;c[2798]=e;w=h;l=x;return w|0}i=c[2794]|0;if(i){d=(i&0-i)+-1|0;h=d>>>12&16;d=d>>>h;g=d>>>5&8;d=d>>>g;j=d>>>2&4;d=d>>>j;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[11476+((g|h|j|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-k|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){j=a;g=d}else{do{h=(c[e+4>>2]&-8)-k|0;j=h>>>0<d>>>0;d=j?h:d;a=j?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);j=a;g=d}h=j+k|0;if(j>>>0<h>>>0){f=c[j+24>>2]|0;b=c[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[j+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[j+28>>2]|0;a=11476+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[2794]=i&~(1<<b);break}}else{c[f+16+(((c[f+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[j+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[j+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(g>>>0<16){w=g+k|0;c[j+4>>2]=w|3;w=j+w+4|0;c[w>>2]=c[w>>2]|1}else{c[j+4>>2]=k|3;c[h+4>>2]=g|1;c[h+g>>2]=g;if(m|0){e=c[2798]|0;b=m>>>3;d=11212+(b<<1<<2)|0;b=1<<b;if(!(n&b)){c[2793]=n|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[2795]=g;c[2798]=h}w=j+8|0;l=x;return w|0}else n=k}else n=k}else n=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;j=c[2794]|0;if(j){e=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)i=31;else{n=(a+1048320|0)>>>16&8;v=a<<n;m=(v+520192|0)>>>16&4;v=v<<m;i=(v+245760|0)>>>16&2;i=14-(m|n|i)+(v<<i>>>15)|0;i=k>>>(i+7|0)&1|i<<1}else i=0;d=c[11476+(i<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;h=k<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){f=(c[d+4>>2]&-8)-k|0;if(f>>>0<e>>>0)if(!f){a=d;e=0;f=d;v=61;break a}else{a=d;e=f}f=c[d+20>>2]|0;d=c[d+16+(h>>>31<<2)>>2]|0;g=(f|0)==0|(f|0)==(d|0)?g:f;f=(d|0)==0;if(f){d=g;v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<<i;a=j&(a|0-a);if(!a){n=k;break}n=(a&0-a)+-1|0;h=n>>>12&16;n=n>>>h;g=n>>>5&8;n=n>>>g;i=n>>>2&4;n=n>>>i;m=n>>>1&2;n=n>>>m;d=n>>>1&1;a=0;d=c[11476+((g|h|i|m|d)+(n>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else{f=d;v=61}}if((v|0)==61)while(1){v=0;d=(c[f+4>>2]&-8)-k|0;n=d>>>0<e>>>0;d=n?d:e;a=n?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){i=a;h=d;break}else{e=d;v=61}}if((i|0)!=0?h>>>0<((c[2795]|0)-k|0)>>>0:0){g=i+k|0;if(i>>>0>=g>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=11476+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=j&~(1<<a);c[2794]=e;break}}else{c[f+16+(((c[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=j;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=j}else e=j}else e=j;while(0);do if(h>>>0>=16){c[i+4>>2]=k|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=11212+(b<<1<<2)|0;a=c[2793]|0;b=1<<b;if(!(a&b)){c[2793]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=11476+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(e&a)){c[2794]=e|a;c[d>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+k|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=k}else n=k}else n=-1;while(0);d=c[2795]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[2798]|0;if(b>>>0>15){w=a+n|0;c[2798]=w;c[2795]=b;c[w+4>>2]=b|1;c[w+b>>2]=b;c[a+4>>2]=n|3}else{c[2795]=0;c[2798]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}h=c[2796]|0;if(h>>>0>n>>>0){u=h-n|0;c[2796]=u;w=c[2799]|0;v=w+n|0;c[2799]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[2911]|0)){c[2913]=4096;c[2912]=4096;c[2914]=-1;c[2915]=-1;c[2916]=0;c[2904]=0;a=o&-16^1431655768;c[o>>2]=a;c[2911]=a;a=4096}else a=c[2913]|0;i=n+48|0;j=n+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=n>>>0){w=0;l=x;return w|0}a=c[2903]|0;if(a|0?(m=c[2901]|0,o=m+k|0,o>>>0<=m>>>0|o>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[2904]&4)){d=c[2799]|0;c:do if(d){e=11620;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(r=e+4|0,(a+(c[r>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=g-h&f;if(b>>>0<2147483647){a=OA(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[r>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=OA(0)|0;if((d|0)!=(-1|0)?(b=d,p=c[2912]|0,q=p+-1|0,b=((q&b|0)==0?0:(q+b&0-p)-b|0)+k|0,p=c[2901]|0,q=b+p|0,b>>>0>n>>>0&b>>>0<2147483647):0){r=c[2903]|0;if(r|0?q>>>0<=p>>>0|q>>>0>r>>>0:0){b=0;break}a=OA(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[2913]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((OA(a|0)|0)==(-1|0)){OA(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[2904]=c[2904]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?k>>>0<2147483647:0)?(u=OA(k|0)|0,r=OA(0)|0,s=r-u|0,t=s>>>0>(n+40|0)>>>0,!((u|0)==(-1|0)|t^1|u>>>0<r>>>0&((u|0)!=(-1|0)&(r|0)!=(-1|0))^1)):0){h=t?s:b;g=u;v=135}if((v|0)==135){b=(c[2901]|0)+h|0;c[2901]=b;if(b>>>0>(c[2902]|0)>>>0)c[2902]=b;j=c[2799]|0;do if(j){b=11620;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=145;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==145?(c[b+12>>2]&8|0)==0:0)?j>>>0<g>>>0&j>>>0>=a>>>0:0){c[d>>2]=e+h;w=j+8|0;w=(w&7|0)==0?0:0-w&7;v=j+w|0;w=(c[2796]|0)+(h-w)|0;c[2799]=v;c[2796]=w;c[v+4>>2]=w|1;c[v+w+4>>2]=40;c[2800]=c[2915];break}if(g>>>0<(c[2797]|0)>>>0)c[2797]=g;d=g+h|0;b=11620;while(1){if((c[b>>2]|0)==(d|0)){v=153;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((v|0)==153?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((b|0)!=(j|0)){if((b|0)==(c[2798]|0)){w=(c[2795]|0)+i|0;c[2795]=w;c[2798]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[2793]=c[2793]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=11476+(d<<2)|0;do if((b|0)!=(c[e>>2]|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[2794]=c[2794]&~(1<<d);break d}while(0);c[a+24>>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=11212+(b<<1<<2)|0;a=c[2793]|0;b=1<<b;if(!(a&b)){c[2793]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=11476+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[2794]|0;d=1<<b;if(!(a&d)){c[2794]=a|d;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=194;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=193;break}else{a=a<<1;d=b}}if((v|0)==193){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==194){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[2796]|0)+i|0;c[2796]=w;c[2799]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}b=11620;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(w=a+(c[b+4>>2]|0)|0,w>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0<f>>>0?j:a;b=a+8|0;d=g+8|0;d=(d&7|0)==0?0:0-d&7;v=g+d|0;d=h+-40-d|0;c[2799]=v;c[2796]=d;c[v+4>>2]=d|1;c[v+d+4>>2]=40;c[2800]=c[2915];d=a+4|0;c[d>>2]=27;c[b>>2]=c[2905];c[b+4>>2]=c[2906];c[b+8>>2]=c[2907];c[b+12>>2]=c[2908];c[2905]=g;c[2906]=h;c[2908]=0;c[2907]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0<w>>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=11212+(b<<1<<2)|0;a=c[2793]|0;b=1<<b;if(!(a&b)){c[2793]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;d=(w+245760|0)>>>16&2;d=14-(u|v|d)+(w<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=11476+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[2794]|0;a=1<<d;if(!(b&a)){c[2794]=b|a;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=216;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=215;break}else{a=a<<1;d=b}}if((v|0)==215){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==216){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[2797]|0;if((w|0)==0|g>>>0<w>>>0)c[2797]=g;c[2905]=g;c[2906]=h;c[2908]=0;c[2802]=c[2911];c[2801]=-1;b=0;do{w=11212+(b<<1<<2)|0;c[w+12>>2]=w;c[w+8>>2]=w;b=b+1|0}while((b|0)!=32);w=g+8|0;w=(w&7|0)==0?0:0-w&7;v=g+w|0;w=h+-40-w|0;c[2799]=v;c[2796]=w;c[v+4>>2]=w|1;c[v+w+4>>2]=40;c[2800]=c[2915]}while(0);b=c[2796]|0;if(b>>>0>n>>>0){u=b-n|0;c[2796]=u;w=c[2799]|0;v=w+n|0;c[2799]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(Az()|0)>>2]=12;w=0;l=x;return w|0}function rz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[2797]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0<f>>>0)return;if((h|0)==(c[2798]|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[2795]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[2793]=c[2793]&~(1<<d);i=h;b=g;break}else{c[a+12>>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=11476+(b<<2)|0;if((h|0)==(c[d>>2]|0)){c[d>>2]=a;if(!a){c[2794]=c[2794]&~(1<<b);i=h;b=g;break}}else{c[f+16+(((c[f+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){a=c[2798]|0;if((j|0)==(c[2799]|0)){j=(c[2796]|0)+b|0;c[2796]=j;c[2799]=i;c[i+4>>2]=j|1;if((i|0)!=(a|0))return;c[2798]=0;c[2795]=0;return}if((j|0)==(a|0)){j=(c[2795]|0)+b|0;c[2795]=j;c[2798]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[2793]=c[2793]&~(1<<d);break}else{c[b+12>>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=11476+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=d;if(!d){c[2794]=c[2794]&~(1<<a);break}}else{c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[2798]|0)){c[2795]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=11212+(a<<1<<2)|0;b=c[2793]|0;a=1<<a;if(!(b&a)){c[2793]=b|a;a=d;b=d+8|0}else{b=d+8|0;a=c[b>>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=11476+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[2794]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[2794]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[2801]|0)+-1|0;c[2801]=j;if(!j)a=11628;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[2801]=-1;return}function sz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=qz(b)|0;return b|0}if(b>>>0>4294967231){c[(Az()|0)>>2]=12;b=0;return b|0}d=tz(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=qz(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;KA(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;rz(a);b=d;return b|0}function tz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+4|0;l=c[m>>2]|0;d=l&-8;i=a+d|0;if(!(l&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[2913]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[m>>2]=l&1|b|2;c[k+4>>2]=d|3;m=k+d+4|0;c[m>>2]=c[m>>2]|1;uz(k,d);return a|0}if((i|0)==(c[2799]|0)){k=(c[2796]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[m>>2]=l&1|b|2;c[e+4>>2]=d|1;c[2799]=e;c[2796]=d;return a|0}if((i|0)==(c[2798]|0)){f=(c[2795]|0)+d|0;if(f>>>0<b>>>0){a=0;return a|0}d=f-b|0;e=l&1;if(d>>>0>15){l=a+b|0;k=l+d|0;c[m>>2]=e|b|2;c[l+4>>2]=d|1;c[k>>2]=d;e=k+4|0;c[e>>2]=c[e>>2]&-2;e=l}else{c[m>>2]=e|f|2;e=a+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[2795]=d;c[2798]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0<b>>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[2793]=c[2793]&~(1<<f);break}else{c[e+12>>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=11476+(d<<2)|0;if((i|0)==(c[e>>2]|0)){c[e>>2]=f;if(!f){c[2794]=c[2794]&~(1<<d);break}}else{c[h+16+(((c[h+16>>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);d=l&1;if(k>>>0<16){c[m>>2]=j|d|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{l=a+b|0;c[m>>2]=d|b|2;c[l+4>>2]=k|3;m=l+k+4|0;c[m>>2]=c[m>>2]|1;uz(l,k);return a|0}return 0}function uz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){e=c[a>>2]|0;if(!(d&3))return;g=a+(0-e)|0;h=e+b|0;if((g|0)==(c[2798]|0)){a=j+4|0;d=c[a>>2]|0;if((d&3|0)!=3){i=g;d=h;break}c[2795]=h;c[a>>2]=d&-2;c[g+4>>2]=h|1;c[g+h>>2]=h;return}b=e>>>3;if(e>>>0<256){a=c[g+8>>2]|0;d=c[g+12>>2]|0;if((d|0)==(a|0)){c[2793]=c[2793]&~(1<<b);i=g;d=h;break}else{c[a+12>>2]=d;c[d+8>>2]=a;i=g;d=h;break}}f=c[g+24>>2]|0;a=c[g+12>>2]|0;do if((a|0)==(g|0)){b=g+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}c[d>>2]=0}else{i=c[g+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){d=c[g+28>>2]|0;b=11476+(d<<2)|0;if((g|0)==(c[b>>2]|0)){c[b>>2]=a;if(!a){c[2794]=c[2794]&~(1<<d);i=g;d=h;break}}else{c[f+16+(((c[f+16>>2]|0)!=(g|0)&1)<<2)>>2]=a;if(!a){i=g;d=h;break}}c[a+24>>2]=f;d=g+16|0;b=c[d>>2]|0;if(b|0){c[a+16>>2]=b;c[b+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a;i=g;d=h}else{i=g;d=h}}else{i=g;d=h}}else{i=a;d=b}while(0);a=j+4|0;e=c[a>>2]|0;if(!(e&2)){a=c[2798]|0;if((j|0)==(c[2799]|0)){j=(c[2796]|0)+d|0;c[2796]=j;c[2799]=i;c[i+4>>2]=j|1;if((i|0)!=(a|0))return;c[2798]=0;c[2795]=0;return}if((j|0)==(a|0)){j=(c[2795]|0)+d|0;c[2795]=j;c[2798]=i;c[i+4>>2]=j|1;c[i+j>>2]=j;return}g=(e&-8)+d|0;b=e>>>3;do if(e>>>0<256){d=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(d|0)){c[2793]=c[2793]&~(1<<b);break}else{c[d+12>>2]=a;c[a+8>>2]=d;break}}else{f=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){b=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}c[d>>2]=0;b=a}else{b=c[j+8>>2]|0;c[b+12>>2]=a;c[a+8>>2]=b;b=a}while(0);if(f|0){a=c[j+28>>2]|0;d=11476+(a<<2)|0;if((j|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){c[2794]=c[2794]&~(1<<a);break}}else{c[f+16+(((c[f+16>>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}c[b+24>>2]=f;a=j+16|0;d=c[a>>2]|0;if(d|0){c[b+16>>2]=d;c[d+24>>2]=b}a=c[a+4>>2]|0;if(a|0){c[b+20>>2]=a;c[a+24>>2]=b}}}while(0);c[i+4>>2]=g|1;c[i+g>>2]=g;if((i|0)==(c[2798]|0)){c[2795]=g;return}else d=g}else{c[a>>2]=e&-2;c[i+4>>2]=d|1;c[i+d>>2]=d}a=d>>>3;if(d>>>0<256){b=11212+(a<<1<<2)|0;d=c[2793]|0;a=1<<a;if(!(d&a)){c[2793]=d|a;a=b;d=b+8|0}else{d=b+8|0;a=c[d>>2]|0}c[d>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=b;return}a=d>>>8;if(a)if(d>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=d>>>(a+7|0)&1|a<<1}else a=0;f=11476+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[2794]|0;e=1<<a;if(!(b&e)){c[2794]=b|e;c[f>>2]=i;c[i+24>>2]=f;c[i+12>>2]=i;c[i+8>>2]=i;return}b=d<<((a|0)==31?0:25-(a>>>1)|0);e=c[f>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(d|0)){a=69;break}f=e+16+(b>>>31<<2)|0;a=c[f>>2]|0;if(!a){a=68;break}else{b=b<<1;e=a}}if((a|0)==68){c[f>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i;return}else if((a|0)==69){h=e+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=e;c[i+24>>2]=0;return}}function vz(){return 11668}function wz(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dz(c[a+60>>2]|0)|0;a=zz(ab(6,d|0)|0)|0;l=b;return a|0}function xz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=zz(db(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=(o<<31>>31)+b|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=zz(db(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function yz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((zz(cb(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function zz(a){a=a|0;if(a>>>0>4294963200){c[(Az()|0)>>2]=0-a;a=-1}return a|0}function Az(){return (Bz()|0)+64|0}function Bz(){return Cz()|0}function Cz(){return 2092}function Dz(a){a=a|0;return a|0}function Ez(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=2;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ta(54,f|0)|0):0)a[b+75>>0]=-1;f=xz(b,d,e)|0;l=g;return f|0}function Fz(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Gz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function Hz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;o=s+80|0;q=s;r=s+136|0;f=o;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((Iz(0,d,n,q,o)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)p=Jz(b)|0;else p=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=Iz(b,d,n,q,o)|0;if(h){ob[c[b+36>>2]&7](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=Iz(b,d,n,q,o)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(p|0)Kz(b);e=(f&32|0)==0?e:-1}l=s;return e|0}\nfunction Iz(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+64|0;D=H+16|0;E=H;B=H+24|0;F=H+8|0;G=H+20|0;c[D>>2]=e;x=(d|0)!=0;y=B+40|0;z=y;B=B+39|0;C=F+4|0;k=0;j=0;p=0;a:while(1){do if((j|0)>-1)if((k|0)>(2147483647-j|0)){c[(Az()|0)>>2]=75;j=-1;break}else{j=k+j|0;break}while(0);k=a[e>>0]|0;if(!(k<<24>>24)){w=87;break}else m=e;b:while(1){switch(k<<24>>24){case 37:{k=m;w=9;break b}case 0:{k=m;break b}default:{}}v=m+1|0;c[D>>2]=v;k=a[v>>0]|0;m=v}c:do if((w|0)==9)while(1){w=0;if((a[m+1>>0]|0)!=37)break c;k=k+1|0;m=m+2|0;c[D>>2]=m;if((a[m>>0]|0)==37)w=9;else break}while(0);k=k-e|0;if(x)Lz(d,e,k);if(k|0){e=m;continue}n=m+1|0;k=(a[n>>0]|0)+-48|0;if(k>>>0<10){v=(a[m+2>>0]|0)==36;u=v?k:-1;p=v?1:p;n=v?m+3|0:n}else u=-1;c[D>>2]=n;k=a[n>>0]|0;m=(k<<24>>24)+-32|0;d:do if(m>>>0<32){o=0;q=k;while(1){k=1<<m;if(!(k&75913)){k=q;break d}o=k|o;n=n+1|0;c[D>>2]=n;k=a[n>>0]|0;m=(k<<24>>24)+-32|0;if(m>>>0>=32)break;else q=k}}else o=0;while(0);if(k<<24>>24==42){m=n+1|0;k=(a[m>>0]|0)+-48|0;if(k>>>0<10?(a[n+2>>0]|0)==36:0){c[i+(k<<2)>>2]=10;k=c[g+((a[m>>0]|0)+-48<<3)>>2]|0;p=1;n=n+3|0}else{if(p|0){j=-1;break}if(x){p=(c[f>>2]|0)+(4-1)&~(4-1);k=c[p>>2]|0;c[f>>2]=p+4;p=0;n=m}else{k=0;p=0;n=m}}c[D>>2]=n;v=(k|0)<0;k=v?0-k|0:k;o=v?o|8192:o}else{k=Mz(D)|0;if((k|0)<0){j=-1;break}n=c[D>>2]|0}do if((a[n>>0]|0)==46){if((a[n+1>>0]|0)!=42){c[D>>2]=n+1;m=Mz(D)|0;n=c[D>>2]|0;break}q=n+2|0;m=(a[q>>0]|0)+-48|0;if(m>>>0<10?(a[n+3>>0]|0)==36:0){c[i+(m<<2)>>2]=10;m=c[g+((a[q>>0]|0)+-48<<3)>>2]|0;n=n+4|0;c[D>>2]=n;break}if(p|0){j=-1;break a}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);m=c[v>>2]|0;c[f>>2]=v+4}else m=0;c[D>>2]=q;n=q}else m=-1;while(0);t=0;while(1){if(((a[n>>0]|0)+-65|0)>>>0>57){j=-1;break a}v=n+1|0;c[D>>2]=v;q=a[(a[n>>0]|0)+-65+(6409+(t*58|0))>>0]|0;r=q&255;if((r+-1|0)>>>0<8){t=r;n=v}else break}if(!(q<<24>>24)){j=-1;break}s=(u|0)>-1;do if(q<<24>>24==19)if(s){j=-1;break a}else w=49;else{if(s){c[i+(u<<2)>>2]=r;s=g+(u<<3)|0;u=c[s+4>>2]|0;w=E;c[w>>2]=c[s>>2];c[w+4>>2]=u;w=49;break}if(!x){j=0;break a}Nz(E,r,f)}while(0);if((w|0)==49?(w=0,!x):0){k=0;e=v;continue}n=a[n>>0]|0;n=(t|0)!=0&(n&15|0)==3?n&-33:n;s=o&-65537;u=(o&8192|0)==0?o:s;e:do switch(n|0){case 110:switch((t&255)<<24>>24){case 0:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 1:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 2:{k=c[E>>2]|0;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;k=0;e=v;continue a}case 3:{b[c[E>>2]>>1]=j;k=0;e=v;continue a}case 4:{a[c[E>>2]>>0]=j;k=0;e=v;continue a}case 6:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 7:{k=c[E>>2]|0;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;k=0;e=v;continue a}default:{k=0;e=v;continue a}}case 112:{n=120;m=m>>>0>8?m:8;e=u|8;w=61;break}case 88:case 120:{e=u;w=61;break}case 111:{n=E;e=c[n>>2]|0;n=c[n+4>>2]|0;r=Pz(e,n,y)|0;s=z-r|0;o=0;q=6873;m=(u&8|0)==0|(m|0)>(s|0)?m:s+1|0;s=u;w=67;break}case 105:case 100:{n=E;e=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){e=EA(0,0,e|0,n|0)|0;n=A;o=E;c[o>>2]=e;c[o+4>>2]=n;o=1;q=6873;w=66;break e}else{o=(u&2049|0)!=0&1;q=(u&2048|0)==0?((u&1|0)==0?6873:6875):6874;w=66;break e}}case 117:{n=E;o=0;q=6873;e=c[n>>2]|0;n=c[n+4>>2]|0;w=66;break}case 99:{a[B>>0]=c[E>>2];e=B;o=0;q=6873;r=y;n=1;m=s;break}case 109:{n=Rz(c[(Az()|0)>>2]|0)|0;w=71;break}case 115:{n=c[E>>2]|0;n=n|0?n:6883;w=71;break}case 67:{c[F>>2]=c[E>>2];c[C>>2]=0;c[E>>2]=F;r=-1;n=F;w=75;break}case 83:{e=c[E>>2]|0;if(!m){Tz(d,32,k,0,u);e=0;w=84}else{r=m;n=e;w=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{k=Vz(d,+h[E>>3],k,m,u,n)|0;e=v;continue a}default:{o=0;q=6873;r=y;n=m;m=u}}while(0);f:do if((w|0)==61){u=E;t=c[u>>2]|0;u=c[u+4>>2]|0;r=Oz(t,u,y,n&32)|0;q=(e&8|0)==0|(t|0)==0&(u|0)==0;o=q?0:2;q=q?6873:6873+(n>>4)|0;s=e;e=t;n=u;w=67}else if((w|0)==66){r=Qz(e,n,y)|0;s=u;w=67}else if((w|0)==71){w=0;u=Sz(n,0,m)|0;t=(u|0)==0;e=n;o=0;q=6873;r=t?n+m|0:u;n=t?m:u-n|0;m=s}else if((w|0)==75){w=0;q=n;e=0;m=0;while(1){o=c[q>>2]|0;if(!o)break;m=Uz(G,o)|0;if((m|0)<0|m>>>0>(r-e|0)>>>0)break;e=m+e|0;if(r>>>0>e>>>0)q=q+4|0;else break}if((m|0)<0){j=-1;break a}Tz(d,32,k,e,u);if(!e){e=0;w=84}else{o=0;while(1){m=c[n>>2]|0;if(!m){w=84;break f}m=Uz(G,m)|0;o=m+o|0;if((o|0)>(e|0)){w=84;break f}Lz(d,G,m);if(o>>>0>=e>>>0){w=84;break}else n=n+4|0}}}while(0);if((w|0)==67){w=0;n=(e|0)!=0|(n|0)!=0;u=(m|0)!=0|n;n=((n^1)&1)+(z-r)|0;e=u?r:y;r=y;n=u?((m|0)>(n|0)?m:n):m;m=(m|0)>-1?s&-65537:s}else if((w|0)==84){w=0;Tz(d,32,k,e,u^8192);k=(k|0)>(e|0)?k:e;e=v;continue}t=r-e|0;s=(n|0)<(t|0)?t:n;u=s+o|0;k=(k|0)<(u|0)?u:k;Tz(d,32,k,u,m);Lz(d,q,o);Tz(d,48,k,u,m^65536);Tz(d,48,s,t,0);Lz(d,e,t);Tz(d,32,k,u,m^8192);e=v}g:do if((w|0)==87)if(!d)if(!p)j=0;else{j=1;while(1){e=c[i+(j<<2)>>2]|0;if(!e)break;Nz(g+(j<<3)|0,e,f);j=j+1|0;if((j|0)>=10){j=1;break g}}while(1){if(c[i+(j<<2)>>2]|0){j=-1;break g}j=j+1|0;if((j|0)>=10){j=1;break}}}while(0);l=H;return j|0}function Jz(a){a=a|0;return 0}function Kz(a){a=a|0;return}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))fA(b,d,a)|0;return}function Mz(b){b=b|0;var d=0,e=0,f=0;e=c[b>>2]|0;f=(a[e>>0]|0)+-48|0;if(f>>>0<10){d=0;do{d=f+(d*10|0)|0;e=e+1|0;c[b>>2]=e;f=(a[e>>0]|0)+-48|0}while(f>>>0<10)}else d=0;return d|0}function Nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function Oz(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[6925+(b&15)>>0]|0|f;b=JA(b|0,c|0,4)|0;c=A}while(!((b|0)==0&(c|0)==0));return e|0}function Pz(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=JA(b|0,c|0,3)|0;c=A}while(!((b|0)==0&(c|0)==0));return d|0}function Qz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=PA(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=NA(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=A}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function Rz(a){a=a|0;return aA(a,c[($z()|0)+188>>2]|0)|0}function Sz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=P(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function Tz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;HA(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{Lz(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}Lz(a,f,e)}l=g;return}function Uz(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Zz(a,b,0)|0;return a|0}function Vz(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;Wz(e)|0;if((A|0)<0){e=-e;C=1;B=6890}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?6891:6896):6893}Wz(e)|0;D=A&2146435072;do if(D>>>0<2146435072|(D|0)==2146435072&0<0){r=+Xz(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){s=i&32;q=(s|0)==0?B:B+9|0;p=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[q>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=Qz(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;n=(g|0)<1;m=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=d[6925+D>>0]|s;e=(e-+(D|0))*16.0;if((k-F|0)==1?!(m&(n&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);D=j-F|0;F=E-o|0;E=(g|0)!=0&(D+-2|0)<(g|0)?g+2|0:D;j=F+p+E|0;Tz(b,32,f,j,h);Lz(b,q,p);Tz(b,48,f,j,h^65536);Lz(b,G,D);Tz(b,48,E-D|0,0,0);Lz(b,o,F);Tz(b,32,f,j,h^8192);break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=IA(c[j>>2]|0,0,o|0)|0;x=FA(x|0,A|0,m|0,0)|0;y=A;v=PA(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=NA(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=P(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=((n|0)%9|0)+1|0;if((n|0)<9){o=10;do{o=o*10|0;n=n+1|0}while((n|0)!=9)}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=((v^1)&1)+k|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(z=c[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=Qz(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;Tz(b,32,f,j,h);Lz(b,B,C);Tz(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=Qz(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){HA(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}Lz(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)Lz(b,6941,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=Qz(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){HA(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}Lz(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}Tz(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=Qz(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;Lz(b,m,1);if(s&(k|0)<1){m=n;break}Lz(b,6941,1);m=n}else{if(m>>>0<=G>>>0)break;HA(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;Lz(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}Tz(b,48,k+18|0,18,0);Lz(b,v,E-v|0)}Tz(b,32,f,j,h^8192)}else{G=(i&32|0)!=0;j=C+3|0;Tz(b,32,f,j,h&-65537);Lz(b,B,C);Lz(b,e!=e|0.0!=0.0?(G?6917:6921):G?6909:6913,3);Tz(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function Wz(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;A=c[j+4>>2]|0;return b|0}function Xz(a,b){a=+a;b=b|0;return +(+Yz(a,b))}function Yz(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=JA(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+Yz(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function Zz(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(_z()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(Az()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(Az()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function _z(){return Cz()|0}function $z(){return Cz()|0}function aA(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[6943+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=7031;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=7031;else{f=7031;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return bA(f,c[e+20>>2]|0)|0}function bA(a,b){a=a|0;b=b|0;return cA(a,b)|0}function cA(a,b){a=a|0;b=b|0;if(!b)b=0;else b=dA(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function dA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=eA(c[b+8>>2]|0,o)|0;f=eA(c[b+12>>2]|0,o)|0;g=eA(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=eA(c[b+(g<<2)>>2]|0,o)|0;g=eA(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Fz(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=eA(c[b+(f<<2)>>2]|0,o)|0;f=eA(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function eA(a,b){a=a|0;b=b|0;var c=0;c=QA(a|0)|0;return ((b|0)==0?a:c)|0}function fA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(gA(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=ob[c[e+36>>2]&7](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=ob[c[e+36>>2]&7](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);KA(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function gA(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function hA(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function iA(a,b){a=T(a);b=T(b);var c=0,d=0;c=jA(a)|0;do if((c&2147483647)>>>0<=2139095040){d=jA(b)|0;if((d&2147483647)>>>0<=2139095040)if((d^c|0)<0){a=(c|0)<0?b:a;break}else{a=a<b?b:a;break}}else a=b;while(0);return T(a)}function jA(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}function kA(a,b){a=T(a);b=T(b);var c=0,d=0;c=lA(a)|0;do if((c&2147483647)>>>0<=2139095040){d=lA(b)|0;if((d&2147483647)>>>0<=2139095040)if((d^c|0)<0){a=(c|0)<0?a:b;break}else{a=a<b?a:b;break}}else a=b;while(0);return T(a)}function lA(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}function mA(a,b){a=a|0;b=b|0;var c=0;c=hA(a)|0;return ((nA(a,1,c,b)|0)!=(c|0))<<31>>31|0}function nA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=P(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(Jz(e)|0)==0;a=fA(a,f,e)|0;if(!g)Kz(e)}else a=fA(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function oA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(gA(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((ob[c[b+36>>2]&7](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function pA(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=Hz(c[584]|0,a,e)|0;l=d;return b|0}function qA(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[584]|0;if((c[f+76>>2]|0)>-1)g=Jz(f)|0;else g=0;do if((mA(b,f)|0)<0)b=1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;b=0;break}b=(oA(f,10)|0)<0}while(0);if(g|0)Kz(f);return b<<31>>31|0}function rA(a,b){a=a|0;b=b|0;return Hz(c[584]|0,a,b)|0}function sA(a){a=a|0;Qa()}function tA(a){a=a|0;return}function uA(a,b){a=a|0;b=b|0;return 0}function vA(a){a=a|0;if((wA(a+4|0)|0)==-1){jb[c[(c[a>>2]|0)+8>>2]&127](a);a=1}else a=0;return a|0}function wA(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=b+-1;return b+-1|0}function xA(a){a=a|0;if(vA(a)|0)yA(a);return}function yA(a){a=a|0;var b=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(wA(b)|0)!=-1:0))jb[c[(c[a>>2]|0)+16>>2]&127](a);return}function zA(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=qz(b)|0;if(a|0)break;a=CA()|0;if(!a){a=0;break}Ab[a&0]()}return a|0}function AA(a){a=a|0;return zA(a)|0}function BA(a){a=a|0;rz(a);return}function CA(){var a=0;a=c[2933]|0;c[2933]=a+0;return a|0}function DA(){}function EA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (A=d,a-c>>>0|0)|0}function FA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (A=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function GA(a){a=+a;return a>=0.0?+B(a+.5):+O(a-.5)}function HA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function IA(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){A=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}A=a<<c-32;return 0}function JA(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){A=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}A=0;return b>>>c-32|0}function KA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return La(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function LA(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}function MA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (A=n,f)|0}else{if(!g){n=0;f=0;return (A=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (A=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(S(i|0)|0)-(S(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (A=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (A=n,f)|0}g=h-1|0;if(g&h|0){i=(S(h|0)|0)+33-(S(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (A=o,p)|0}else{p=LA(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (A=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (A=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (A=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((LA(i|0)|0)>>>0);return (A=o,p)|0}g=(S(i|0)|0)-(S(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (A=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (A=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=FA(m|0,l|0,-1,-1)|0;d=A;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;EA(k|0,d|0,e|0,n|0)|0;p=A;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=EA(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=A;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (A=o,p)|0}function NA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MA(a,b,c,d,0)|0}function OA(a){a=a|0;var b=0,d=0;d=a+15&-16|0;b=c[i>>2]|0;a=b+d|0;if((d|0)>0&(a|0)<(b|0)|(a|0)<0){Y()|0;Na(12);return -1}c[i>>2]=a;if((a|0)>(X()|0)?(W()|0)==0:0){c[i>>2]=b;Na(12);return -1}return b|0}function PA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;MA(a,b,d,e,f)|0;l=g;return (A=c[f+4>>2]|0,c[f>>2]|0)|0}function QA(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function RA(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;gb[a&1](b|0,c|0,d|0,e|0,f|0)}function SA(a,b,c){a=a|0;b=b|0;c=+c;hb[a&31](b|0,+c)}function TA(a,b,c,d){a=a|0;b=b|0;c=T(c);d=T(d);return T(ib[a&0](b|0,T(c),T(d)))}function UA(a,b){a=a|0;b=b|0;jb[a&127](b|0)}function VA(a,b,c){a=a|0;b=b|0;c=c|0;kb[a&31](b|0,c|0)}function WA(a,b){a=a|0;b=b|0;return lb[a&31](b|0)|0}function XA(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;mb[a&1](b|0,+c,+d,e|0)}function YA(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nb[a&1](b|0,+c,+d)}function ZA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ob[a&7](b|0,c|0,d|0)|0}function _A(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +pb[a&1](b|0,c|0,d|0)}function $A(a,b){a=a|0;b=b|0;return +qb[a&15](b|0)}function aB(a,b,c){a=a|0;b=b|0;c=+c;return rb[a&1](b|0,+c)|0}function bB(a,b,c){a=a|0;b=b|0;c=c|0;return sb[a&15](b|0,c|0)|0}function cB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;tb[a&1](b|0,c|0,+d,+e,f|0)}function dB(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ub[a&1](b|0,c|0,d|0,e|0,f|0,g|0)}function eB(a,b,c){a=a|0;b=b|0;c=c|0;return +vb[a&7](b|0,c|0)}function fB(a){a=a|0;return wb[a&7]()|0}function gB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;xb[a&1](b|0,c|0,d|0,+e)}function hB(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=T(d);e=e|0;f=T(f);g=g|0;yb[a&1](b|0,c|0,T(d),e|0,T(f),g|0)}function iB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;zb[a&15](b|0,c|0,d|0)}function jB(a){a=a|0;Ab[a&0]()}function kB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Bb[a&15](b|0,c|0,+d)}function lB(a,b,c){a=a|0;b=+b;c=+c;return Cb[a&1](+b,+c)|0}function mB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Db[a&15](b|0,c|0,d|0,e|0)}function nB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;U(0)}function oB(a,b){a=a|0;b=+b;U(1)}function pB(a,b,c){a=a|0;b=T(b);c=T(c);U(2);return fb}function qB(a){a=a|0;U(3)}function rB(a,b){a=a|0;b=b|0;U(4)}function sB(a){a=a|0;U(5);return 0}function tB(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;U(6)}function uB(a,b,c){a=a|0;b=+b;c=+c;U(7)}function vB(a,b,c){a=a|0;b=b|0;c=c|0;U(8);return 0}function wB(a,b,c){a=a|0;b=b|0;c=c|0;U(9);return 0.0}function xB(a){a=a|0;U(10);return 0.0}function yB(a,b){a=a|0;b=+b;U(11);return 0}function zB(a,b){a=a|0;b=b|0;U(12);return 0}function AB(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;U(13)}function BB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;U(14)}function CB(a,b){a=a|0;b=b|0;U(15);return 0.0}function DB(){U(16);return 0}function EB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;U(17)}function FB(a,b,c,d,e,f){a=a|0;b=b|0;c=T(c);d=d|0;e=T(e);f=f|0;U(18)}function GB(a,b,c){a=a|0;b=b|0;c=c|0;U(19)}function HB(){U(20)}function IB(a,b,c){a=a|0;b=b|0;c=+c;U(21)}function JB(a,b){a=+a;b=+b;U(22);return 0}function KB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;U(23)}\n\n// EMSCRIPTEN_END_FUNCS\nvar gb=[nB,Wu];var hb=[oB,gf,hf,jf,kf,lf,mf,nf,pf,qf,sf,tf,uf,vf,wf,xf,yf,zf,Af,oB,oB,oB,oB,oB,oB,oB,oB,oB,oB,oB,oB,oB];var ib=[pB];var jb=[qB,rz,tA,ii,ji,ki,ln,mn,nn,hs,is,js,Eu,Fu,Gu,Fy,Gy,Hy,Ne,Se,of,rf,Cg,Dg,Rh,si,Ki,hj,Bj,Xj,tk,Qk,hl,Bl,Xl,om,Hm,_m,Hn,_n,so,Lo,cp,vp,Rp,hq,yq,Wq,gr,jr,Dr,Gr,Yr,ms,ps,Js,_s,qt,Mt,ti,bw,Mw,cx,ux,Tx,jy,vy,yy,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB,qB];var kb=[rB,Sg,Te,Ue,Xe,Ye,Ze,_e,$e,af,df,ef,ff,Rf,Uf,Vf,Wf,Xf,Yf,Zf,cg,gg,Fg,Og,Vp,kq,ew,Ut,zw,rB,rB,rB];var lb=[sB,qz,wz,Tg,Ef,If,Jf,Kf,Lf,Mf,Nf,Pf,Qf,dg,eg,Gg,Eg,Bq,Ms,jw,lw,sB,sB,sB,sB,sB,sB,sB,sB,sB,sB,sB];var mb=[tB,Hg];var nb=[uB,$r];var ob=[vB,Ub,xz,yz,Ez,xk,Ln,yx];var pb=[wB,sm];var qb=[xB,Sf,Tf,_f,Ig,Jg,Kg,Lg,Mg,Ng,xB,xB,xB,xB,xB,xB];var rb=[yB,cr];var sb=[zB,sz,uA,fg,Xh,lj,Uk,ll,cn,co,ct,gx,zB,zB,zB,zB];var tb=[AB,Oi];var ub=[BB,Xx];var vb=[CB,$f,Pg,Qg,Rg,Lm,CB,CB];var wb=[DB,Ug,Le,or,Kr,us,Cy,DB];var xb=[EB,Po];var yb=[FB,ig];var zb=[GB,Ff,Of,ag,bg,Fj,$j,Fl,gp,zp,ut,xv,Qw,ny,GB,GB];var Ab=[HB];var Bb=[IB,Ve,We,bf,cf,Bf,Cf,Df,wo,Zq,IB,IB,IB,IB,IB,IB];var Cb=[JB,es];var Db=[KB,$l,Jq,ur,Qr,Bs,Rt,qw,Ny,KB,KB,KB,KB,KB,KB,KB];return{_roundf:GA,stackSave:Fb,getTempRet0:Kb,_memset:HA,setThrew:Ib,_bitshift64Lshr:JA,_bitshift64Shl:IA,_llvm_cttz_i32:LA,_sbrk:OA,_memcpy:KA,stackAlloc:Eb,___uremdi3:PA,_nbind_init:az,_i64Subtract:EA,___udivmoddi4:MA,setTempRet0:Jb,_i64Add:FA,_emscripten_get_global_libc:vz,__GLOBAL__sub_I_Binding_cc:Uv,___udivdi3:NA,_llvm_bswap_i32:QA,__GLOBAL__sub_I_nbind_cc:Vg,_free:rz,runPostSets:DA,establishStackSpace:Hb,stackRestore:Gb,_malloc:qz,__GLOBAL__sub_I_common_cc:Dt,stackAlloc:Eb,stackSave:Fb,stackRestore:Gb,establishStackSpace:Hb,setThrew:Ib,setTempRet0:Jb,getTempRet0:Kb,dynCall_viiiii:RA,dynCall_vid:SA,dynCall_fiff:TA,dynCall_vi:UA,dynCall_vii:VA,dynCall_ii:WA,dynCall_viddi:XA,dynCall_vidd:YA,dynCall_iiii:ZA,dynCall_diii:_A,dynCall_di:$A,dynCall_iid:aB,dynCall_iii:bB,dynCall_viiddi:cB,dynCall_viiiiii:dB,dynCall_dii:eB,dynCall_i:fB,dynCall_viiid:gB,dynCall_viififi:hB,dynCall_viii:iB,dynCall_v:jB,dynCall_viid:kB,dynCall_idd:lB,dynCall_viiii:mB}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _roundf=Module[\"_roundf\"]=asm[\"_roundf\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _llvm_cttz_i32=Module[\"_llvm_cttz_i32\"]=asm[\"_llvm_cttz_i32\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _nbind_init=Module[\"_nbind_init\"]=asm[\"_nbind_init\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var ___udivmoddi4=Module[\"___udivmoddi4\"]=asm[\"___udivmoddi4\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=asm[\"_emscripten_get_global_libc\"];var __GLOBAL__sub_I_Binding_cc=Module[\"__GLOBAL__sub_I_Binding_cc\"]=asm[\"__GLOBAL__sub_I_Binding_cc\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var __GLOBAL__sub_I_nbind_cc=Module[\"__GLOBAL__sub_I_nbind_cc\"]=asm[\"__GLOBAL__sub_I_nbind_cc\"];var _free=Module[\"_free\"]=asm[\"_free\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var __GLOBAL__sub_I_common_cc=Module[\"__GLOBAL__sub_I_common_cc\"]=asm[\"__GLOBAL__sub_I_common_cc\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_vid=Module[\"dynCall_vid\"]=asm[\"dynCall_vid\"];var dynCall_fiff=Module[\"dynCall_fiff\"]=asm[\"dynCall_fiff\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_viddi=Module[\"dynCall_viddi\"]=asm[\"dynCall_viddi\"];var dynCall_vidd=Module[\"dynCall_vidd\"]=asm[\"dynCall_vidd\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_diii=Module[\"dynCall_diii\"]=asm[\"dynCall_diii\"];var dynCall_di=Module[\"dynCall_di\"]=asm[\"dynCall_di\"];var dynCall_iid=Module[\"dynCall_iid\"]=asm[\"dynCall_iid\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_viiddi=Module[\"dynCall_viiddi\"]=asm[\"dynCall_viiddi\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_dii=Module[\"dynCall_dii\"]=asm[\"dynCall_dii\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_viiid=Module[\"dynCall_viiid\"]=asm[\"dynCall_viiid\"];var dynCall_viififi=Module[\"dynCall_viififi\"]=asm[\"dynCall_viififi\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_viid=Module[\"dynCall_viid\"]=asm[\"dynCall_viid\"];var dynCall_idd=Module[\"dynCall_idd\"]=asm[\"dynCall_idd\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Runtime.stackAlloc=Module[\"stackAlloc\"];Runtime.stackSave=Module[\"stackSave\"];Runtime.stackRestore=Module[\"stackRestore\"];Runtime.establishStackSpace=Module[\"establishStackSpace\"];Runtime.setTempRet0=Module[\"setTempRet0\"];Runtime.getTempRet0=Module[\"getTempRet0\"];Module[\"asm\"]=asm;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};Module[\"callMain\"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module[\"thisProgram\"]),\"i8\",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),\"i8\",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,\"i32\",ALLOC_NORMAL);try{var ret=Module[\"_main\"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"SimulateInfiniteLoop\"){Module[\"noExitRuntime\"]=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}Module.printErr(\"exception thrown: \"+toLog);Module[\"quit\"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module[\"arguments\"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(Module[\"_main\"]&&shouldRunNow)Module[\"callMain\"](args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=Module.run=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;var extra=\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output=\"abort(\"+what+\") at \"+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module[\"abort\"]=Module.abort=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"]){shouldRunNow=false}run()}))\n\n\n\n\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(4).Buffer))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nfunction patch(prototype, name, fn) {\n\n    let original = prototype[name];\n\n    prototype[name] = function (... args) {\n        return fn.call(this, original, ... args);\n    };\n\n}\n\nmodule.exports = function (bind, lib) {\n\n    let constants = Object.assign({\n\n        UNDEFINED: NaN\n\n    }, __webpack_require__(10));\n\n    class Layout {\n\n        constructor(left, right, top, bottom, width, height) {\n\n            this.left = left;\n            this.right = right;\n\n            this.top = top;\n            this.bottom = bottom;\n\n            this.width = width;\n            this.height = height;\n\n        }\n\n        fromJS(expose) {\n\n            expose(this.left, this.right, this.top, this.bottom, this.width, this.height);\n\n        }\n\n        toString() {\n\n            return `<Layout#${this.left}:${this.right};${this.top}:${this.bottom};${this.width}:${this.height}>`;\n\n        }\n\n    }\n\n    class Size {\n\n        static fromJS({ width, height }) {\n\n            return new Size(width, height);\n\n        }\n\n        constructor(width, height) {\n\n            this.width = width;\n            this.height = height;\n\n        }\n\n        fromJS(expose) {\n\n            expose(this.width, this.height);\n\n        }\n\n        toString() {\n\n            return `<Size#${this.width}x${this.height}>`;\n\n        }\n\n    }\n\n    class Value {\n\n        constructor(unit, value) {\n\n            this.unit = unit;\n            this.value = value;\n\n        }\n\n        fromJS(expose) {\n\n            expose(this.unit, this.value);\n\n        }\n\n        toString() {\n\n            switch (this.unit) {\n\n                case constants.UNIT_POINT:\n                    return `${this.value}`;\n\n                case constants.UNIT_PERCENT:\n                    return `${this.value}%`;\n\n                case constants.UNIT_AUTO:\n                    return `auto`;\n\n                default: {\n                    return `${this.value}?`;\n                }\n\n            }\n\n        }\n\n        valueOf() {\n\n            return this.value;\n\n        }\n\n    }\n\n    for (let fnName of [ `setPosition`, `setMargin`, `setFlexBasis`, `setWidth`, `setHeight`, `setMinWidth`, `setMinHeight`, `setMaxWidth`, `setMaxHeight`, `setPadding` ]) {\n\n        let methods = { [constants.UNIT_POINT]: lib.Node.prototype[fnName], [constants.UNIT_PERCENT]: lib.Node.prototype[`${fnName}Percent`], [constants.UNIT_AUTO]: lib.Node.prototype[`${fnName}Auto`] };\n\n        patch(lib.Node.prototype, fnName, function (original, ... args) {\n\n            // We patch all these functions to add support for the following calls:\n            // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n            let value = args.pop();\n            let unit, asNumber;\n\n            if (value === `auto`) {\n\n                unit = constants.UNIT_AUTO;\n                asNumber = undefined;\n\n            } else if (value instanceof Value) {\n\n                unit = value.unit;\n                asNumber = value.valueOf();\n\n            } else {\n\n                unit = typeof value === `string` && value.endsWith(`%`) ? constants.UNIT_PERCENT : constants.UNIT_POINT;\n                asNumber = parseFloat(value);\n\n            }\n\n            if (!Object.prototype.hasOwnProperty.call(methods, unit))\n                throw new Error(`Failed to execute \"${fnName}\": Unsupported unit.`);\n\n            if (asNumber !== undefined) {\n                return methods[unit].call(this, ... args, asNumber);\n            } else {\n                return methods[unit].call(this, ... args);\n            }\n\n        });\n\n    }\n\n    patch(lib.Node.prototype, `free`, function () {\n\n        // Since we handle the memory allocation ourselves (via lib.Node.create), we also need to handle the deallocation\n\n        lib.Node.destroy(this);\n\n    });\n\n    patch(lib.Node.prototype, `freeRecursive`, function () {\n\n        for (let t = 0, T = this.getChildCount(); t < T; ++t)\n            this.getChild(0).freeRecursive();\n\n        this.free();\n\n    });\n\n    patch(lib.Node.prototype, `setMeasureFunc`, function (original, measureFunc) {\n\n        // This patch is just a convenience patch, since it helps write more idiomatic source code (such as .setMeasureFunc(null))\n        // We also automatically convert the return value of the measureFunc to a Size object, so that we can return anything that has .width and .height properties\n\n        if (measureFunc) {\n            return original.call(this, (... args) => Size.fromJS(measureFunc(... args)));\n        } else {\n            return this.unsetMeasureFunc();\n        }\n\n    });\n\n    patch(lib.Node.prototype, `calculateLayout`, function (original, width = constants.UNDEFINED, height = constants.UNDEFINED, direction = constants.DIRECTION_LTR) {\n\n        // Just a small patch to add support for the function default parameters\n\n        return original.call(this, width, height, direction);\n\n    });\n\n    function setExperimentalFeatureEnabled(... args) {\n\n        return lib.setExperimentalFeatureEnabled(... args);\n\n    }\n\n    function isExperimentalFeatureEnabled(... args) {\n\n        return lib.isExperimentalFeatureEnabled(... args);\n\n    }\n\n    function getInstanceCount(... args) {\n\n        return lib.getInstanceCount(... args);\n\n    }\n\n    bind(`Layout`, Layout);\n    bind(`Size`, Size);\n    bind(`Value`, Value);\n\n    return Object.assign({\n\n        Node: lib.Node,\n\n        Layout,\n        Size,\n        Value,\n\n        setExperimentalFeatureEnabled,\n        isExperimentalFeatureEnabled,\n\n        getInstanceCount\n\n    }, constants);\n\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n  var len = b64.length\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // the number of equal signs (place holders)\n  // if there are two placeholders, than the two characters before it\n  // represent one byte\n  // if there is only one, then the three characters before it represent 2 bytes\n  // this is just a cheap hack to not do indexOf twice\n  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n  // base64 is 4/3 + up to two characters of the original data\n  return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n  var i, l, tmp, placeHolders, arr\n  var len = b64.length\n  placeHolders = placeHoldersCount(b64)\n\n  arr = new Arr((len * 3 / 4) - placeHolders)\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  l = placeHolders > 0 ? len - 4 : len\n\n  var L = 0\n\n  for (i = 0; i < l; i += 4) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n    arr[L++] = (tmp >> 16) & 0xFF\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  if (placeHolders === 2) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[L++] = tmp & 0xFF\n  } else if (placeHolders === 1) {\n    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[L++] = (tmp >> 8) & 0xFF\n    arr[L++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var output = ''\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    output += lookup[tmp >> 2]\n    output += lookup[(tmp << 4) & 0x3F]\n    output += '=='\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n    output += lookup[tmp >> 10]\n    output += lookup[(tmp >> 4) & 0x3F]\n    output += lookup[(tmp << 2) & 0x3F]\n    output += '='\n  }\n\n  parts.push(output)\n\n  return parts.join('')\n}\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(3)\nvar ieee754 = __webpack_require__(5)\nvar isArray = __webpack_require__(6)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = nBytes * 8 - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = nBytes * 8 - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports = {\n\n  ALIGN_COUNT: 8,\n  ALIGN_AUTO: 0,\n  ALIGN_FLEX_START: 1,\n  ALIGN_CENTER: 2,\n  ALIGN_FLEX_END: 3,\n  ALIGN_STRETCH: 4,\n  ALIGN_BASELINE: 5,\n  ALIGN_SPACE_BETWEEN: 6,\n  ALIGN_SPACE_AROUND: 7,\n\n  DIMENSION_COUNT: 2,\n  DIMENSION_WIDTH: 0,\n  DIMENSION_HEIGHT: 1,\n\n  DIRECTION_COUNT: 3,\n  DIRECTION_INHERIT: 0,\n  DIRECTION_LTR: 1,\n  DIRECTION_RTL: 2,\n\n  DISPLAY_COUNT: 2,\n  DISPLAY_FLEX: 0,\n  DISPLAY_NONE: 1,\n\n  EDGE_COUNT: 9,\n  EDGE_LEFT: 0,\n  EDGE_TOP: 1,\n  EDGE_RIGHT: 2,\n  EDGE_BOTTOM: 3,\n  EDGE_START: 4,\n  EDGE_END: 5,\n  EDGE_HORIZONTAL: 6,\n  EDGE_VERTICAL: 7,\n  EDGE_ALL: 8,\n\n  EXPERIMENTAL_FEATURE_COUNT: 2,\n  EXPERIMENTAL_FEATURE_ROUNDING: 0,\n  EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: 1,\n\n  FLEX_DIRECTION_COUNT: 4,\n  FLEX_DIRECTION_COLUMN: 0,\n  FLEX_DIRECTION_COLUMN_REVERSE: 1,\n  FLEX_DIRECTION_ROW: 2,\n  FLEX_DIRECTION_ROW_REVERSE: 3,\n\n  JUSTIFY_COUNT: 5,\n  JUSTIFY_FLEX_START: 0,\n  JUSTIFY_CENTER: 1,\n  JUSTIFY_FLEX_END: 2,\n  JUSTIFY_SPACE_BETWEEN: 3,\n  JUSTIFY_SPACE_AROUND: 4,\n\n  LOG_LEVEL_COUNT: 5,\n  LOG_LEVEL_ERROR: 0,\n  LOG_LEVEL_WARN: 1,\n  LOG_LEVEL_INFO: 2,\n  LOG_LEVEL_DEBUG: 3,\n  LOG_LEVEL_VERBOSE: 4,\n\n  MEASURE_MODE_COUNT: 3,\n  MEASURE_MODE_UNDEFINED: 0,\n  MEASURE_MODE_EXACTLY: 1,\n  MEASURE_MODE_AT_MOST: 2,\n\n  OVERFLOW_COUNT: 3,\n  OVERFLOW_VISIBLE: 0,\n  OVERFLOW_HIDDEN: 1,\n  OVERFLOW_SCROLL: 2,\n\n  POSITION_TYPE_COUNT: 2,\n  POSITION_TYPE_RELATIVE: 0,\n  POSITION_TYPE_ABSOLUTE: 1,\n\n  PRINT_OPTIONS_COUNT: 3,\n  PRINT_OPTIONS_LAYOUT: 1,\n  PRINT_OPTIONS_STYLE: 2,\n  PRINT_OPTIONS_CHILDREN: 4,\n\n  UNIT_COUNT: 4,\n  UNIT_UNDEFINED: 0,\n  UNIT_POINT: 1,\n  UNIT_PERCENT: 2,\n  UNIT_AUTO: 3,\n\n  WRAP_COUNT: 3,\n  WRAP_NO_WRAP: 0,\n  WRAP_WRAP: 1,\n  WRAP_WRAP_REVERSE: 2,\n\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nvar nbind = __webpack_require__(1);\n\nvar ran = false;\nvar ret = null;\n\nnbind({}, function (err, result) {\n\n    if (ran)\n        return;\n\n    ran = true;\n\n    if (err)\n        throw err;\n\n    ret = result;\n\n});\n\nif (!ran)\n    throw new Error('Failed to load the yoga module - it needed to be loaded synchronously, but didn\\'t');\n\nmodule.exports = __webpack_require__(2)(ret.bind, ret.lib);\n\n\n/***/ })\n/******/ ]);\n});","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Extract the URL string from a property which might be a string or a resource\n * object.\n */\nexport default function extractURL(resource: string | {uri: string}): string | null {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n  if (typeof resource === 'object' && typeof resource.uri === 'string') {\n    return resource.uri;\n  }\n  return null;\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Merges the properties of two objects into one\n */\nexport default function merge(foo, bar) {\n  const merged = {};\n  for (const each in bar) {\n    if (foo.hasOwnProperty(each) && bar.hasOwnProperty(each)) {\n      if (typeof foo[each] === 'object' && typeof bar[each] === 'object') {\n        merged[each] = merge(foo[each], bar[each]);\n      } else {\n        merged[each] = bar[each];\n      }\n    } else if (bar.hasOwnProperty(each)) {\n      merged[each] = bar[each];\n    }\n  }\n  for (const each in foo) {\n    if (!(each in bar) && foo.hasOwnProperty(each)) {\n      merged[each] = foo[each];\n    }\n  }\n  return merged;\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseMesh from './BaseMesh';\nimport {CylinderBufferGeometry} from 'three';\nimport merge from '../Utils/merge';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nexport default class RCTCylinder extends RCTBaseMesh {\n  _radiusTop: number;\n  _radiusBottom: number;\n  _dimHeight: number;\n  _segments: number;\n  _needsUpdate: boolean;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super(guiSys, rnctx);\n\n    this._radiusTop = 0.5;\n    this._radiusBottom = 0.5;\n    this._dimHeight = 1;\n    this._segments = 8;\n    this._needsUpdate = false;\n\n    Object.defineProperty(\n      this.props,\n      'radiusTop',\n      ({\n        set: radiusTop => {\n          this._radiusTop = radiusTop;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'radiusBottom',\n      ({\n        set: radiusBottom => {\n          this._radiusBottom = radiusBottom;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'dimHeight',\n      ({\n        set: height => {\n          this._dimHeight = height;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'segments',\n      ({\n        set: segments => {\n          this._segments = segments;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    (this: any)._generateGeometry = this._generateGeometry.bind(this);\n  }\n\n  frame() {\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n      this._generateGeometry();\n    }\n  }\n\n  _generateGeometry() {\n    const geometry = new CylinderBufferGeometry(\n      this._radiusTop,\n      this._radiusBottom,\n      this._dimHeight,\n      this._segments\n    );\n    this._setGeometry(geometry);\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        radiusTop: 'number',\n        radiusBottom: 'number',\n        dimHeight: 'number',\n        segments: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseMesh from './BaseMesh';\nimport {PlaneBufferGeometry} from 'three';\nimport merge from '../Utils/merge';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nexport default class RCTPlane extends RCTBaseMesh {\n  _dimWidth: number;\n  _dimHeight: number;\n  _needsUpdate: boolean;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super(guiSys, rnctx);\n\n    this._dimWidth = 1;\n    this._dimHeight = 1;\n    this._needsUpdate = false;\n\n    Object.defineProperty(\n      this.props,\n      'dimWidth',\n      ({\n        set: width => {\n          this._dimWidth = width;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'dimHeight',\n      ({\n        set: height => {\n          this._dimHeight = height;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    (this: any)._generateGeometry = this._generateGeometry.bind(this);\n  }\n\n  frame() {\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n      this._generateGeometry();\n    }\n  }\n\n  _generateGeometry() {\n    const geometry = new PlaneBufferGeometry(this._dimWidth, this._dimHeight);\n    this._setGeometry(geometry);\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        dimWidth: 'number',\n        dimHeight: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseMesh from './BaseMesh';\nimport * as THREE from 'three';\nimport merge from '../Utils/merge';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nconst SphereGeometryCache = {};\n\nfunction createSphereGeometry(radius: number, heightSegments: number, widthSegments: number) {\n  const key = `${radius}:${heightSegments}:${widthSegments}`;\n  const cache = SphereGeometryCache[key];\n  if (cache) {\n    cache.count++;\n    return cache.geom;\n  }\n  const geometry = new THREE.SphereBufferGeometry(radius, widthSegments, heightSegments);\n\n  SphereGeometryCache[key] = {\n    geom: geometry,\n    count: 1,\n  };\n\n  return geometry;\n}\n\nconst sphereRayCast = (function() {\n  // avoid create temp objects;\n  const inverseMatrix = new THREE.Matrix4();\n  const ray = new THREE.Ray();\n  const intersectionPoint = new THREE.Vector3();\n  const intersectionPointWorld = new THREE.Vector3();\n  return function(sphere, raycaster, intersects) {\n    // transform the ray into the space of the sphere\n    inverseMatrix.getInverse(this.matrixWorld);\n    ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n    const intersect = ray.intersectSphere(sphere, intersectionPoint);\n    if (intersect === null) {\n      return;\n    }\n\n    // determine hit location in world space\n    intersectionPointWorld.copy(intersectionPoint);\n    intersectionPointWorld.applyMatrix4(this.matrixWorld);\n\n    const distance = raycaster.ray.origin.distanceTo(intersectionPointWorld);\n    if (distance < raycaster.near || distance > raycaster.far) {\n      return;\n    }\n\n    intersects.push({\n      distance: distance,\n      point: intersectionPointWorld.clone(),\n      object: this,\n    });\n  };\n})();\n\nexport default class RCTSphere extends RCTBaseMesh {\n  _radius: number;\n  _heightSegments: number;\n  _widthSegments: number;\n  _needsUpdate: boolean;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super(guiSys, rnctx);\n\n    this._radius = 0.5;\n    this._heightSegments = 6;\n    this._widthSegments = 8;\n    this._needsUpdate = false;\n\n    Object.defineProperty(\n      this.props,\n      'radius',\n      ({\n        set: radius => {\n          this._radius = radius;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'heightSegments',\n      ({\n        set: segments => {\n          this._heightSegments = segments;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    Object.defineProperty(\n      this.props,\n      'widthSegments',\n      ({\n        set: segments => {\n          this._widthSegments = segments;\n          this._needsUpdate = true;\n        },\n      }: Object)\n    );\n\n    (this: any)._generateGeometry = this._generateGeometry.bind(this);\n  }\n\n  frame() {\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n      this._generateGeometry();\n    }\n  }\n\n  _generateGeometry() {\n    const geometry = createSphereGeometry(this._radius, this._widthSegments, this._heightSegments);\n    this._setGeometry(geometry);\n    const sphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), this._radius);\n    this.mesh.raycast = sphereRayCast.bind(this.mesh, sphere);\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        radius: 'number',\n        widthSegments: 'number',\n        heightSegments: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTImage: runtime implementation of the <Image source={{uri:URL}}>\n * @class RCTImage\n * @extends RCTBaseView\n * @flow\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\n\nimport type {GuiSys} from 'ovrui';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nexport default class RCTImage extends RCTBaseView {\n  _rnctx: ReactNativeContext;\n\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n    this._rnctx = rnctx;\n\n    // assign the property function mappings\n    Object.defineProperty(\n      this.props,\n      'source',\n      ({\n        set: value => {\n          // call onLoadStart in React\n          this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n            this.getTag(),\n            'topLoadStart',\n            [],\n          ]);\n          // only interested in the uri for the source\n          if (value.uri.indexOf('texture://') === 0) {\n            this._rnctx.TextureManager\n              .getTextureForURL(value.uri)\n              .then(tex => {\n                this.view.setImageTexture(tex);\n                const image = tex.image;\n                let width;\n                let height;\n                if (image instanceof Image) {\n                  width = image.naturalWidth;\n                  height = image.naturalHeight;\n                } else {\n                  width = image.width || 0;\n                  height = image.height || 0;\n                }\n                this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n                  this.getTag(),\n                  'topLoad',\n                  {\n                    url: value.uri,\n                    source: value,\n                    width: width,\n                    height: height,\n                  },\n                ]);\n                // call onLoadEvent in React\n                this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n                  this.getTag(),\n                  'topLoadEnd',\n                  [],\n                ]);\n              })\n              .catch(() => {\n                // call onLoadEvent in React\n                this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n                  this.getTag(),\n                  'topLoadEnd',\n                  [],\n                ]);\n              });\n          } else {\n            this.view.setImage(value.uri, (loaded, width, height) => {\n              // call onLoad in React\n              if (loaded) {\n                this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n                  this.getTag(),\n                  'topLoad',\n                  {\n                    url: value.uri,\n                    source: value,\n                    width: width,\n                    height: height,\n                  },\n                ]);\n              }\n              // call onLoadEvent in React\n              this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n                this.getTag(),\n                'topLoadEnd',\n                [],\n              ]);\n            });\n          }\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'resizeMode',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'stretch';\n          }\n          this.view.setResizeMode(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'inset',\n      ({\n        set: value => {\n          this.view.setInset(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'insetSize',\n      ({\n        set: value => {\n          this.view.setInsetSize(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'crop',\n      ({\n        set: value => {\n          this.view.setTextureCrop(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'pointerEvents',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'auto';\n          }\n          this.view.setPointerEvents(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'hitSlop',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          if (typeof value === 'number') {\n            this.view.setHitSlop(value, value, value, value);\n          } else {\n            this.view.setHitSlop(value.left, value.top, value.right, value.bottom);\n          }\n        },\n      }: Object)\n    );\n    this.props.inset = [0.0, 0.0, 0.0, 0.0];\n    this.props.insetSize = [0.0, 0.0, 0.0, 0.0];\n\n    // assign the style property function mappings\n    // setter for tintColor, this is applied as a tint to the image\n    Object.defineProperty(\n      this.style,\n      'tintColor',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0xffffffff;\n          }\n          this.view.setImageColor(value);\n        },\n      }: Object)\n    );\n  }\n\n  /**\n   * Customised present layout so that the border settings can be updated\n   */\n  presentLayout() {\n    super.presentLayout();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the supported properties send from react to native\n      NativeProps: {\n        source: 'string',\n        resizeMode: 'string',\n        inset: 'number',\n        insetSize: 'number',\n        crop: 'number',\n        pointerEvents: 'string',\n        hitSlop: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Defines RTCView \"derived\" from RTCBaseView.\n * Assigns 'this.view' to OVRUI.UIView(guiSys),\n * so basically this is a view with three.js support.\n * @class RCTView\n * @extends RCTBaseView\n * @flow\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\n\nimport type {GuiSys} from 'ovrui';\n\nexport default class RCTView extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys: GuiSys) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n\n    Object.defineProperty(\n      this.props,\n      'pointerEvents',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'auto';\n          }\n          this.view.setPointerEvents(value);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'hitSlop',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          if (typeof value === 'number') {\n            this.view.setHitSlop(value, value, value, value);\n          } else {\n            this.view.setHitSlop(value.left, value.top, value.right, value.bottom);\n          }\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'cursorVisibilitySlop',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          if (typeof value === 'number') {\n            this.view.setCursorVisibilitySlop(value, value, value, value);\n          } else {\n            this.view.setCursorVisibilitySlop(value.left, value.top, value.right, value.bottom);\n          }\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'billboarding',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'off';\n          }\n          this.view.setBillboarding(value);\n        },\n      }: Object)\n    );\n  }\n\n  /**\n   * Customised present layout so that the border settings can be updated\n   */\n  presentLayout() {\n    super.presentLayout();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe(): any {\n    return merge(super.describe(), {\n      NativeProps: {\n        pointerEvents: 'string',\n        hitSlop: 'number',\n        cursorVisibilitySlop: 'number',\n        billboarding: 'string',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTPano: runtime implementation of the <Pano source={{uri:URL}}>\n * creates a 1000 m radius globe that as a child of the view\n * view responds to layout and transforms with pivot point the center\n * of the view\n * @class RCTPano\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport StereoOffsetRepeats from '../Utils/StereoOffsetRepeats';\nimport {HPanoBufferGeometry} from '../Utils/HPano';\nimport {CubePanoBufferGeometry} from '../Utils/CubePano';\nimport {RCTBindedResource} from '../Utils/RCTBindedResource';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nimport Prefetch from './Prefetch';\n\nconst panoRayCast = (function() {\n  // avoid create temp objects;\n  const inverseMatrix = new THREE.Matrix4();\n  const ray = new THREE.Ray();\n  const sphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), 1000);\n  const intersectionPoint = new THREE.Vector3();\n  const intersectionPointWorld = new THREE.Vector3();\n  return function(raycaster, intersects) {\n    // transform the ray into the space of the sphere\n    inverseMatrix.getInverse(this.matrixWorld);\n    ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n    const intersect = ray.intersectSphere(sphere, intersectionPoint);\n    if (intersect === null) {\n      return;\n    }\n\n    // determine hit location in world space\n    intersectionPointWorld.copy(intersectionPoint);\n    intersectionPointWorld.applyMatrix4(this.matrixWorld);\n\n    const distance = raycaster.ray.origin.distanceTo(intersectionPointWorld);\n    if (distance < raycaster.near || distance > raycaster.far) {\n      return;\n    }\n\n    intersects.push({\n      distance: distance,\n      point: intersectionPointWorld.clone(),\n      object: this,\n    });\n  };\n})();\n\nlet sphereGeometry = undefined;\nlet cubeGeometry = undefined;\n\nexport default class RCTPano extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super();\n\n    sphereGeometry = sphereGeometry || new THREE.SphereGeometry(1000, 50, 50);\n    cubeGeometry = cubeGeometry || new CubePanoBufferGeometry(2000, 3, 2, 1.01);\n\n    this._tintOpacity = 1.0;\n    this._styleOpacity = 1.0;\n    this._sphereGeometry = sphereGeometry;\n    this._cubeGeometry = cubeGeometry;\n    this._material = new OVRUI.StereoBasicTextureMaterial({\n      color: 'white',\n      side: THREE.DoubleSide,\n    });\n\n    this._globe = new THREE.Mesh(this._sphereGeometry, this._material);\n    this._globe.onBeforeRender = function(renderer, scene, camera, geometry, material, group) {\n      if (camera.viewID === 1 && material.stereoOffsetRepeats[1]) {\n        material.uniforms.stereoOffsetRepeat.value = material.stereoOffsetRepeats[1];\n      } else {\n        material.uniforms.stereoOffsetRepeat.value = material.stereoOffsetRepeats[0];\n      }\n      if (material._rightEnvMap) {\n        if (camera.viewID === 1) {\n          material.envMap = material._rightEnvMap;\n        } else {\n          material.envMap = material._leftEnvMap;\n        }\n        material.needsUpdate = true;\n      }\n    };\n\n    this._globe.raycast = panoRayCast.bind(this._globe);\n    this._globe.rotation.y = -Math.PI / 2;\n\n    this.view = new OVRUI.UIView(guiSys);\n    // set zOffset to be the radius of the sphere. This helps prevent the pano's\n    // transparency from affecting other views as a result of rendering order.\n    this.view.zOffset = 1000;\n    this.view.add(this._globe);\n    this._localResource = new RCTBindedResource(rnctx.RCTResourceManager);\n    this.globeOnUpdate = this.globeOnUpdate.bind(this);\n\n    Object.defineProperty(this.props, 'source', {\n      set: value => this.setSource(value),\n    });\n    // register a setter for the backgroundColor so the globe can be tinted\n    Object.defineProperty(this.style, 'opacity', {\n      set: value => {\n        this._styleOpacity = value;\n        this._material.opacity = this._styleOpacity * this._tintOpacity;\n        this._material.transparent = this._material.opacity < 1;\n      },\n    });\n    // register a setter for the backgroundColor so the globe can be tinted\n    Object.defineProperty(this.style, 'tintColor', {\n      set: value => {\n        const opacity = parseInt(value.toString(16).slice(0, 2), 16) / 255;\n        this._material.color.set(value);\n        this._tintOpacity = opacity;\n        this._material.opacity = this._styleOpacity * this._tintOpacity;\n        this._material.transparent = this._material.opacity < 1;\n      },\n    });\n  }\n\n  globeOnUpdate(scene, camera) {\n    const projScreenMatrix = new THREE.Matrix4();\n    const modelViewMatrix = new THREE.Matrix4();\n    modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, this._globe.matrixWorld);\n    projScreenMatrix.multiplyMatrices(camera.projectionMatrix, modelViewMatrix);\n    this._globe.geometry.update(this.maxDepth, projScreenMatrix);\n    this._globe.material = this._globe.geometry.material;\n  }\n\n  setSource(value) {\n    if (value && value.tile) {\n      // use tile renderer\n      this._globe.geometry.dispose();\n      this.maxDepth = value.maxDepth || 2;\n      this._globe.geometry = new HPanoBufferGeometry(1000, this.maxDepth, value.tile);\n      this._globe.onUpdate = this.globeOnUpdate;\n    } else {\n      // use sphere renderer\n      this._globe.geometry.dispose();\n      if (value && value.layout === 'CUBEMAP_32') {\n        this._globe.geometry = this._cubeGeometry;\n        this._globe.scale.z = -1;\n        this._material.useUV = 1;\n      } else {\n        this._globe.geometry = this._sphereGeometry;\n        this._globe.scale.z = 1;\n        this._material.useUV = 0;\n      }\n      this._globe.onUpdate = null;\n      // call onLoadStart in React\n      this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n        this.getTag(),\n        'topLoadStart',\n        [],\n      ]);\n      const loadRemoteTexture = (url, onLoad, viewID) => {\n        // When a url is null or undefined, send undefined to onLoad callback\n        const onError = () => onLoad(undefined, viewID);\n        const onLoadDisposable = texture => {\n          texture._needsDispose = true;\n          onLoad(texture, viewID);\n        };\n        // No progress indication for now.\n        const onProgress = undefined;\n        if (url == null) {\n          onError();\n        } else if (Prefetch.isCached(url)) {\n          // First Check if the texture hasn't already been prefetched\n          const cachedTexture = Prefetch.getFromCache(url);\n          onLoad(cachedTexture, viewID);\n        } else if (Array.isArray(url)) {\n          const loader = new THREE.CubeTextureLoader();\n          loader.setCrossOrigin('Access-Control-Allow-Origin');\n          loader.load(url, onLoadDisposable, onProgress, onError);\n        } else {\n          const loader = new THREE.TextureLoader();\n          loader.setCrossOrigin('Access-Control-Allow-Origin');\n          loader.load(url, onLoadDisposable, onProgress, onError);\n        }\n      };\n      const onLoadOrChange = (texture, viewID) => {\n        // ignore a old request result\n        if (value !== this._currentSource) {\n          return;\n        }\n        this._globe.scale.x = -1;\n        // Only dispose certain textures, not those that have been\n        // prefetched or from video. A texture manager would be useful\n        // to help track the lifetime of textures.\n        if (this._material.map && this._material.map._needsDispose) {\n          this._material.map.dispose();\n        }\n        if (\n          this._material.envMap &&\n          this._material.envMap._needsDispose &&\n          this._material.envMap !== this._material._leftEnvMap &&\n          this._material.envMap !== this._material._rightEnvMap\n        ) {\n          this._material.envMap.dispose();\n        }\n        if (texture === undefined) {\n          this._material.map = undefined;\n          this._material.envMap = undefined;\n        } else if (texture.type === 'MonoTextureInfo') {\n          this._material.map = texture.texture;\n          this._material.envMap = undefined;\n        } else {\n          if (!value.enableMipmaps) {\n            texture.generateMipmaps = false;\n            texture.minFilter = THREE.LinearFilter;\n          }\n          texture.wrapS = THREE.ClampToEdgeWrapping;\n          texture.wrapT = THREE.ClampToEdgeWrapping;\n          const cubeTexture = texture.isCubeTexture ? texture : null;\n          const flatTexture = texture.isCubeTexture ? null : texture;\n          if (texture.isCubeTexture) {\n            this._globe.scale.x = 1;\n          }\n          this._material.map = flatTexture;\n          this._material.envMap = cubeTexture;\n          if (viewID === 1) {\n            this._nextRightEnvMap = cubeTexture;\n          } else {\n            this._nextLeftEnvMap = cubeTexture;\n          }\n        }\n        const stereoFormat = value && value.stereo ? value.stereo : '2D';\n        this._material.stereoOffsetRepeats = StereoOffsetRepeats[stereoFormat];\n        if (!this._material.stereoOffsetRepeats) {\n          console.warn(`Pano: stereo format '${stereoFormat}' not supported.`);\n          // fallback to 2D\n          this._material.stereoOffsetRepeats = StereoOffsetRepeats['2D'];\n        }\n        this._material.needsUpdate = true;\n\n        this._numTexturesToLoad--;\n        if (this._numTexturesToLoad === 0) {\n          if (this._material._leftEnvMap && this._material._leftEnvMap._needsDispose) {\n            this._material._leftEnvMap.dispose();\n          }\n          if (this._material._rightEnvMap && this._material._rightEnvMap._needsDispose) {\n            this._material._rightEnvMap.dispose();\n          }\n          this._material._leftEnvMap = this._nextLeftEnvMap;\n          this._material._rightEnvMap = this._nextRightEnvMap;\n          // call onLoad in React\n          if (texture !== undefined) {\n            this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n              this.getTag(),\n              'topLoad',\n              [],\n            ]);\n          }\n          // call onLoadEvent in React\n          this.UIManager._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [\n            this.getTag(),\n            'topLoadEnd',\n            [],\n          ]);\n        }\n      };\n\n      this._currentSource = value;\n      this._numTexturesToLoad = 1;\n      this._nextLeftEnvMap = undefined;\n      this._nextRightEnvMap = undefined;\n      if (Array.isArray(value)) {\n        if ((value.length !== 6 && value.length !== 12) || !value[0].uri) {\n          console.warn(\n            'Pano expected cubemap source in format [{uri: http..}, {uri: http..}, ... ]' +\n              'with length of 6 (or 12 for stereo)'\n          );\n          return;\n        }\n        const urls = value.map(function(x) {\n          return x.uri;\n        });\n        this._localResource.unregister();\n        if (urls.length === 12) {\n          this._numTexturesToLoad = 2;\n          loadRemoteTexture(urls.slice(0, 6), onLoadOrChange, 0);\n          loadRemoteTexture(urls.slice(6, 12), onLoadOrChange, 1);\n        } else {\n          loadRemoteTexture(urls, onLoadOrChange, 0);\n        }\n      } else {\n        const url = value ? value.uri : null;\n        if (this._localResource.isValidUrl(url)) {\n          this._localResource.load(url, texture => onLoadOrChange(texture, 0));\n        } else {\n          this._localResource.unregister();\n          loadRemoteTexture(url, onLoadOrChange, 0);\n        }\n      }\n    }\n  }\n\n  presentLayout() {\n    super.presentLayout();\n    this._globe.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n  }\n\n  /**\n   * Dispose of any associated resources\n   */\n  dispose() {\n    if (this._localResource) {\n      this._localResource.dispose();\n    }\n    super.dispose();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        source: 'string',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * StereoOffsetRepeats: Constants of offsetRepeats for different stereo format\n */\n\nimport * as THREE from 'three';\n\nconst StereoOffsetRepeats = {\n  // 2D texture\n  '2D': [new THREE.Vector4(0, 0, 1, 1)],\n  // 3D texture splited into top and bottom, the top-half for left eye and the bottom-half for right eye\n  TOP_BOTTOM_3D: [new THREE.Vector4(0, 0.5, 1, 0.5), new THREE.Vector4(0, 0, 1, 0.5)],\n  // 3D texture splited into top and bottom, the bottom-half for left eye and the top-half for right eye\n  BOTTOM_TOP_3D: [new THREE.Vector4(0, 0, 1, 0.5), new THREE.Vector4(0, 0.5, 1, 0.5)],\n  // 3D texture splited into left and right, the left-half for left eye and the right-half for right eye\n  LEFT_RIGHT_3D: [new THREE.Vector4(0, 0, 0.5, 1), new THREE.Vector4(0.5, 0, 0.5, 1)],\n  // 3D texture splited into left and right, the right-half for left eye and the left-half for right eye\n  RIGHT_LEFT_3D: [new THREE.Vector4(0.5, 0, 0.5, 1), new THREE.Vector4(0, 0, 0.5, 1)],\n};\n\nexport default StereoOffsetRepeats;\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * HPano\n * This is an implementation of a hierarchical cube map style pano where at each level a\n * face is split into 2x2 sub quad and thereby doubling the resolution\n * images are streamed in and discarded as required\n * an aproximate texel to pixel ratio is computed to determine if a split is worth while\n *\n * This geometry type only makes sense as a full, surrounding pano\n */\nimport * as THREE from 'three';\n\nfunction sign(value) {\n  return value < 0;\n}\n\nfunction clipLinePlane(plane, p0, p1, uv0, uv1) {\n  const d0 = p0.x * plane[0] + p0.y * plane[1] + p0.z * plane[2] + p0.w * plane[3];\n  const d1 = p1.x * plane[0] + p1.y * plane[1] + p1.z * plane[2] + p1.w * plane[3];\n  if (d0 < 0 && d1 < 0) {\n    return true;\n  }\n  if (sign(d0) !== sign(d1)) {\n    if (d0 < 0) {\n      const dx = p1.x - p0.x;\n      const dy = p1.y - p0.y;\n      const dz = p1.z - p0.z;\n      const dw = p1.w - p0.w;\n      const du = uv1[0] - uv0[0];\n      const dv = uv1[1] - uv0[1];\n      const f = -d0 / (d1 - d0);\n      p0.x += dx * f;\n      p0.y += dy * f;\n      p0.z += dz * f;\n      p0.w += dw * f;\n      uv0[0] += du * f;\n      uv0[1] += dv * f;\n    } else {\n      const dx = p0.x - p1.x;\n      const dy = p0.y - p1.y;\n      const dz = p0.z - p1.z;\n      const dw = p0.w - p1.w;\n      const du = uv0[0] - uv1[0];\n      const dv = uv0[1] - uv1[1];\n      const f = -d1 / (d0 - d1);\n      p1.x += dx * f;\n      p1.y += dy * f;\n      p1.z += dz * f;\n      p1.w += dw * f;\n      uv1[0] += du * f;\n      uv1[1] += dv * f;\n    }\n  }\n  return false;\n}\n\n/*\n * clip to the unit homogeneous positions which allows clipping against a unit frustum\n * returns true if any portion of the line would be outsize of the frustum by clipping\n * to the left, right, top and bottom planes\n */\nconst clipLineToFrustum = (function() {\n  const p0 = new THREE.Vector4();\n  const p1 = new THREE.Vector4();\n\n  return function(ctx, pnt0, pnt1, uv0, uv1, projectionMatrix) {\n    p0.fromArray([pnt0[0], pnt0[1], pnt0[2], 1]);\n    p0.applyMatrix4(projectionMatrix);\n    p1.fromArray([pnt1[0], pnt1[1], pnt1[2], 1]);\n    p1.applyMatrix4(projectionMatrix);\n    let clipped = false;\n    clipped = clipped || clipLinePlane([1, 0, 1, 0], p0, p1, uv0, uv1);\n    clipped = clipped || clipLinePlane([-1, 0, 1, 0], p0, p1, uv0, uv1);\n    clipped = clipped || clipLinePlane([0, 1, 1, 0], p0, p1, uv0, uv1);\n    clipped = clipped || clipLinePlane([0, -1, 1, 0], p0, p1, uv0, uv1);\n    if (!clipped) {\n      const px0 = [p0.x / p0.w * 512, p0.y / p0.w * 512];\n      const px1 = [p1.x / p1.w * 512, p1.y / p1.w * 512];\n      const dpxX = px1[0] - px0[0];\n      const dpxY = px1[1] - px0[1];\n      const px = Math.sqrt(dpxX * dpxX + dpxY * dpxY);\n      const dU = uv1[0] - uv0[0];\n      const dV = uv1[1] - uv0[1];\n      const uv = Math.sqrt(dU * dU + dV * dV);\n      const texelPerPixel = uv / px;\n      ctx.texelPerPixel = Math.min(ctx.texelPerPixel, texelPerPixel);\n    }\n    return clipped;\n  };\n})();\n\n/*\n * helper to propend a leading zero\n */\nfunction zeroPrepend(str) {\n  if (str.length === 1) {\n    return '0' + str;\n  }\n  return str;\n}\n\n// states of loading of the textures\nconst HPANO_MAP_UNLOADED = 0;\nconst HPANO_MAP_LOADING = 1;\nconst HPANO_MAP_LOADED = 2;\n\nexport function HPanoBufferGeometry(rad, maxLevels, baseurl) {\n  THREE.BufferGeometry.call(this);\n\n  this.dirty = true;\n  this.type = 'HPanoBufferGeometry';\n  this.material = [];\n  this.materialsCached = {};\n  this.rad = rad;\n  this.baseurl = baseurl;\n\n  this.update(maxLevels);\n}\n\nHPanoBufferGeometry.prototype = Object.assign(Object.create(THREE.BufferGeometry.prototype), {\n  constructor: HPanoBufferGeometry,\n\n  isHPanoBufferGeometry: true,\n\n  dispose: function() {\n    THREE.BufferGeometry.prototype.dispose();\n    for (let i = 0; i < this.material.length; i++) {\n      this.material[i].map && this.material[i].map.dispose();\n      this.material[i].map = null;\n      this.material[i].dispose();\n    }\n    this.material = [];\n    this.materialsCached = {};\n  },\n\n  update: function(maxLevels, projectionMatrix) {\n    this.dirty = false;\n\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new THREE.Sphere();\n    }\n    this.boundingSphere.radius = Math.sqrt(3 * this.rad * this.rad);\n\n    const quadCount = Math.pow(4, maxLevels) * 6;\n    const vertCount = quadCount * 4;\n    if (this.quadCount !== quadCount) {\n      this.quadCount = quadCount;\n      this.positions = new Float32Array(vertCount * 3);\n      this.uvs = new Float32Array(vertCount * 2);\n      this.indices = new Uint16Array(quadCount * 6);\n      this.setIndex(new THREE.BufferAttribute(this.indices, 1).setDynamic(true));\n      this.addAttribute('position', new THREE.BufferAttribute(this.positions, 3).setDynamic(true));\n      this.addAttribute('uv', new THREE.BufferAttribute(this.uvs, 2).setDynamic(true));\n    }\n    const positions = this.positions;\n    const uvs = this.uvs;\n    const indices = this.indices;\n\n    const context = {\n      offsetPosition: 0,\n      offsetUV: 0,\n      offsetIndices: 0,\n    };\n\n    for (let i = 0; i < this.material.length; i++) {\n      this.material[i].referenced = false;\n    }\n\n    // at each update we will reset the groups\n    this.clearGroups();\n    const geom = this;\n    // process the quad made up of the four coordinates\n    // tl - topLeft\n    // tr - topRight\n    // bl - bottomLeft\n    // br - bottomRight\n    function fillQuad(ctx, tl, tr, bl, br, tile, side, level) {\n      // replace markup for texture url\n      const file = geom.baseurl\n        .replace('%l', (level + 1).toString())\n        .replace('%s', side)\n        .replace('%h', (tile[0] + 1).toString())\n        .replace('%v', (tile[1] + 1).toString())\n        .replace('%0h', zeroPrepend((tile[0] + 1).toString()))\n        .replace('%0v', zeroPrepend((tile[1] + 1).toString()))\n        .replace('%t0', (tile[0] + 1).toString())\n        .replace('%t1', (tile[1] + 1).toString())\n        .replace('%0t0', zeroPrepend((tile[0] + 1).toString()))\n        .replace('%0t1', zeroPrepend((tile[1] + 1).toString()));\n      let mtr = geom.materialsCached[file];\n      let divide = false;\n      if (projectionMatrix) {\n        // very basic test to see if edges clip frustum\n        // and calculates a rough pixel per meter ratio\n        // which is used to determine if it is worth dividing the tiles\n        const ctx = {texelPerPixel: 1};\n        let anyVisible = false;\n        anyVisible |= !clipLineToFrustum(\n          ctx,\n          tl,\n          br,\n          [0, 0],\n          [tileSize, tileSize],\n          projectionMatrix\n        );\n        anyVisible |= !clipLineToFrustum(ctx, tl, tr, [0, 0], [0, tileSize], projectionMatrix);\n        anyVisible |= !clipLineToFrustum(\n          ctx,\n          tr,\n          br,\n          [tileSize, 0],\n          [tileSize, tileSize],\n          projectionMatrix\n        );\n        anyVisible |= !clipLineToFrustum(\n          ctx,\n          br,\n          bl,\n          [tileSize, tileSize],\n          [0, 0],\n          projectionMatrix\n        );\n        anyVisible |= !clipLineToFrustum(ctx, bl, tl, [0, 0], [0, tileSize], projectionMatrix);\n        if (anyVisible) {\n          divide = ctx.texelPerPixel < 1;\n        }\n      }\n      if (!mtr) {\n        // create the material for this quad\n        // setup to be in unloaded texture state\n        mtr = new THREE.MeshBasicMaterial({\n          wireframe: false,\n          depthWrite: false,\n          color: ['white', 'green', 'blue'][level],\n          side: THREE.DoubleSide,\n        });\n        mtr.loadState = HPANO_MAP_UNLOADED;\n        geom.materialsCached[file] = mtr;\n        mtr.index = geom.material.length;\n        mtr.level = level;\n        geom.material.push(mtr);\n      }\n\n      let addQuad = false;\n      if (mtr.loadState !== HPANO_MAP_LOADED || level === maxLevels || !divide) {\n        // only issue load requests if not already in progress\n        if (mtr.loadState === HPANO_MAP_UNLOADED) {\n          mtr.loadState = HPANO_MAP_LOADING;\n          const loader = new THREE.TextureLoader();\n          loader.load(\n            file,\n            function(texture) {\n              texture.wrapS = THREE.ClampToEdgeWrapping;\n              texture.wrapT = THREE.ClampToEdgeWrapping;\n              texture.minFilter = THREE.LinearFilter;\n              // may have been marked to unload\n              if (mtr.loadState === HPANO_MAP_LOADING) {\n                mtr.map = texture;\n                mtr.needsUpdate = true;\n                mtr.loadState = HPANO_MAP_LOADED;\n              }\n              geom.dirty = true;\n            },\n            undefined,\n            function() {\n              console.log('failed to load ' + file);\n            }\n          );\n        }\n        mtr.referenced = true;\n        addQuad = true;\n      } else {\n        // quad  should be subdivided, calculate the corners\n        const mid_tlbr = [(tl[0] + br[0]) / 2, (tl[1] + br[1]) / 2, (tl[2] + br[2]) / 2];\n        const mid_tltr = [(tl[0] + tr[0]) / 2, (tl[1] + tr[1]) / 2, (tl[2] + tr[2]) / 2];\n        const mid_blbr = [(bl[0] + br[0]) / 2, (bl[1] + br[1]) / 2, (bl[2] + br[2]) / 2];\n        const mid_tlbl = [(tl[0] + bl[0]) / 2, (tl[1] + bl[1]) / 2, (tl[2] + bl[2]) / 2];\n        const mid_trbr = [(tr[0] + br[0]) / 2, (tr[1] + br[1]) / 2, (tr[2] + br[2]) / 2];\n        let valid = true;\n        valid &= fillQuad(\n          ctx,\n          tl,\n          mid_tltr,\n          mid_tlbl,\n          mid_tlbr,\n          [tile[0] * 2, tile[1] * 2],\n          side,\n          level + 1\n        );\n        valid &= fillQuad(\n          ctx,\n          mid_tltr,\n          tr,\n          mid_tlbr,\n          mid_trbr,\n          [tile[0] * 2 + 1, tile[1] * 2],\n          side,\n          level + 1\n        );\n        valid &= fillQuad(\n          ctx,\n          mid_tlbl,\n          mid_tlbr,\n          bl,\n          mid_blbr,\n          [tile[0] * 2, tile[1] * 2 + 1],\n          side,\n          level + 1\n        );\n        valid &= fillQuad(\n          ctx,\n          mid_tlbr,\n          mid_trbr,\n          mid_blbr,\n          br,\n          [tile[0] * 2 + 1, tile[1] * 2 + 1],\n          side,\n          level + 1\n        );\n\n        mtr.referenced = true;\n        // if any child is not fully loaded also render this parent quad\n        if (!valid) {\n          addQuad = true;\n        }\n      }\n\n      // draw the quad, this should only happen if\n      // - the mtr is loaded\n      // - any child quad is not ready to draw\n      if (addQuad && mtr.loadState === HPANO_MAP_LOADED) {\n        geom.addGroup(ctx.offsetIndices, 6, mtr.index);\n        positions[ctx.offsetPosition + 0] = tl[0];\n        positions[ctx.offsetPosition + 1] = tl[1];\n        positions[ctx.offsetPosition + 2] = tl[2];\n\n        positions[ctx.offsetPosition + 3] = tr[0];\n        positions[ctx.offsetPosition + 4] = tr[1];\n        positions[ctx.offsetPosition + 5] = tr[2];\n\n        positions[ctx.offsetPosition + 6] = bl[0];\n        positions[ctx.offsetPosition + 7] = bl[1];\n        positions[ctx.offsetPosition + 8] = bl[2];\n\n        positions[ctx.offsetPosition + 9] = br[0];\n        positions[ctx.offsetPosition + 10] = br[1];\n        positions[ctx.offsetPosition + 11] = br[2];\n\n        uvs[ctx.offsetUV + 0] = 0;\n        uvs[ctx.offsetUV + 1] = 1;\n\n        uvs[ctx.offsetUV + 2] = 1;\n        uvs[ctx.offsetUV + 3] = 1;\n\n        uvs[ctx.offsetUV + 4] = 0;\n        uvs[ctx.offsetUV + 5] = 0;\n\n        uvs[ctx.offsetUV + 6] = 1;\n        uvs[ctx.offsetUV + 7] = 0;\n\n        const index = ctx.offsetPosition / 3;\n        indices[ctx.offsetIndices + 0] = index + 0;\n        indices[ctx.offsetIndices + 1] = index + 1;\n        indices[ctx.offsetIndices + 2] = index + 3;\n\n        indices[ctx.offsetIndices + 3] = index + 0;\n        indices[ctx.offsetIndices + 4] = index + 3;\n        indices[ctx.offsetIndices + 5] = index + 2;\n\n        ctx.offsetPosition += 12;\n        ctx.offsetUV += 8;\n        ctx.offsetIndices += 6;\n      }\n      return mtr.loadState === HPANO_MAP_LOADED;\n    }\n    const tileSize = 1024;\n    const rad = this.rad;\n    fillQuad(\n      context,\n      [-rad, rad, -rad],\n      [rad, rad, -rad],\n      [-rad, -rad, -rad],\n      [rad, -rad, -rad],\n      [0, 0],\n      'f',\n      0\n    );\n    fillQuad(\n      context,\n      [rad, rad, rad],\n      [-rad, rad, rad],\n      [rad, -rad, rad],\n      [-rad, -rad, rad],\n      [0, 0],\n      'b',\n      0\n    );\n    fillQuad(\n      context,\n      [rad, rad, -rad],\n      [rad, rad, rad],\n      [rad, -rad, -rad],\n      [rad, -rad, rad],\n      [0, 0],\n      'r',\n      0\n    );\n    fillQuad(\n      context,\n      [-rad, rad, rad],\n      [-rad, rad, -rad],\n      [-rad, -rad, rad],\n      [-rad, -rad, -rad],\n      [0, 0],\n      'l',\n      0\n    );\n    fillQuad(\n      context,\n      [-rad, -rad, -rad],\n      [rad, -rad, -rad],\n      [-rad, -rad, rad],\n      [rad, -rad, rad],\n      [0, 0],\n      'd',\n      0\n    );\n    fillQuad(\n      context,\n      [-rad, rad, rad],\n      [rad, rad, rad],\n      [-rad, rad, -rad],\n      [rad, rad, -rad],\n      [0, 0],\n      'u',\n      0\n    );\n    // buffers are reused so flag for three.js to update the gl versions\n    this.getAttribute('position').needsUpdate = true;\n    this.getAttribute('uv').needsUpdate = true;\n    this.getIndex().needsUpdate = true;\n    // unload any textures no longer required\n    for (const i in this.materialsCached) {\n      const mtr = this.materialsCached[i];\n      if (mtr.level > 0 && !mtr.referenced && mtr.map) {\n        mtr.map && mtr.map.dispose();\n        mtr.map = null;\n        mtr.loadState = HPANO_MAP_UNLOADED;\n      }\n    }\n  },\n});\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * CubePano\n * This is an implementation of a cube map style pano for cubestrips texture.\n * cubestrips texture includes the 6 faces of cubemap in one texture. The common\n * format(columns:rows) is 1:6 and 3:2.\n *\n * This geometry type only makes sense as a full, surrounding pano\n */\n\nimport * as THREE from 'three';\n\nexport function CubePanoBufferGeometry(size, columns, rows, expansionCoef) {\n  THREE.BufferGeometry.call(this);\n\n  columns = columns || 3;\n  rows = rows || 6 / this.columns;\n  expansionCoef = expansionCoef || 1.01;\n  const eps = (expansionCoef - 1) / 2;\n\n  const halfSide = size / 2;\n  const vertexCount = 24;\n  const vs = [5, 1, 3, 7, 0, 4, 6, 2, 6, 7, 3, 2, 0, 1, 5, 4, 4, 5, 7, 6, 1, 0, 2, 3];\n  const positions = new Float32Array(vertexCount * 3);\n  const uv0 = new Float32Array(vertexCount * 2);\n  const indices = new Uint32Array(36);\n\n  for (let i = 0; i < vertexCount; i++) {\n    const v = vs[i];\n    positions[i * 3 + 0] = (((v >> 2) & 1) * 2 - 1) * halfSide;\n    positions[i * 3 + 1] = (((v >> 1) & 1) * 2 - 1) * halfSide;\n    positions[i * 3 + 2] = ((v & 1) * 2 - 1) * halfSide;\n  }\n\n  const w = 1.0 / columns;\n  const h = 1.0 / rows;\n  let index = 0;\n  for (let y = 0; y < rows; ++y) {\n    for (let x = 0; x < columns; ++x) {\n      const ty = rows - 1 - y;\n      uv0[index + 0] = (x + eps) * w;\n      uv0[index + 1] = (ty + eps) * h;\n\n      uv0[index + 2] = (x + 1 - eps) * w;\n      uv0[index + 3] = (ty + eps) * h;\n\n      uv0[index + 4] = (x + 1 - eps) * w;\n      uv0[index + 5] = (ty + 1 - eps) * h;\n\n      uv0[index + 6] = (x + eps) * w;\n      uv0[index + 7] = (ty + 1 - eps) * h;\n\n      index += 8;\n    }\n  }\n\n  index = 0;\n  for (let face = 0; face < vertexCount; face += 4) {\n    indices[index + 0] = face;\n    indices[index + 1] = face + 1;\n    indices[index + 2] = face + 2;\n\n    indices[index + 3] = face;\n    indices[index + 4] = face + 2;\n    indices[index + 5] = face + 3;\n\n    index += 6;\n  }\n\n  this.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n  this.addAttribute('uv', new THREE.BufferAttribute(uv0, 2));\n  this.setIndex(new THREE.BufferAttribute(indices, 1));\n}\n\nCubePanoBufferGeometry.prototype = Object.assign(Object.create(THREE.BufferGeometry.prototype), {\n  constructor: CubePanoBufferGeometry,\n  isCubePanoBufferGeometry: true,\n});\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Class for using a local resource and automatically update when the resource binded to the url changed.\n */\nexport function RCTBindedResource(resourceManager) {\n  this.resourceManager = resourceManager;\n  this.url = undefined;\n  this.callback = undefined;\n}\n\nRCTBindedResource.prototype = Object.assign(Object.create(Object.prototype), {\n  constructor: RCTBindedResource,\n\n  /**\n   * load a local resource\n   * @param {url} url - The url.\n   * @param {function} onLoadOrChange - the callback function when the resouce updated\n   */\n  load: function(url, onLoadOrChange) {\n    // unregister previous url\n    this.unregister();\n    // If it's a valid url in resource manager\n    if (this.resourceManager.isValidUrl(url)) {\n      const self = this;\n      const requestUrl = url;\n      const requestCallback = function(url) {\n        // before calling the callback, check if the requestUrl is current url\n        if (self.url === requestUrl) {\n          const parsed = self.resourceManager.parseUrl(url);\n          onLoadOrChange(self.resourceManager.getResource(parsed.protocol, parsed.handle));\n        }\n      };\n      // Register the listener\n      this.resourceManager.addListener(url, requestCallback);\n      this.callback = requestCallback;\n      this.url = requestUrl;\n\n      // Call the callback to get current resourse\n      requestCallback(url);\n    } else {\n      console.warn(`RCTBindedResource.load: requesting a not valid local resource ${url}.`);\n    }\n  },\n\n  // Checking an url is a valid local resource or not\n  isValidUrl: function(url) {\n    return this.resourceManager.isValidUrl(url);\n  },\n\n  unregister: function() {\n    if (this.resourceManager.isValidUrl(this.url)) {\n      this.resourceManager.removeListener(this.url, this.callback);\n    }\n    this.url = undefined;\n    this.callback = undefined;\n  },\n\n  /**\n   * call this before remove a RCTBindedResource, it will unresister the\n   * listener of the url\n   */\n  dispose: function() {\n    this.unregister();\n  },\n});\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTPrefetch: Description here\n * @class RCTPrefetch\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as THREE from 'three';\nimport * as OVRUI from 'ovrui';\n\nexport default class RCTPrefetch extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super();\n\n    this.view = new OVRUI.UIView(guiSys);\n\n    Object.defineProperty(this.props, 'source', {\n      set: value => {\n        if (Array.isArray(value)) {\n          this.prefetch(value);\n        } else {\n          this.prefetch(value.uri);\n        }\n      },\n    });\n  }\n\n  /**\n   * prefetch\n   * Request a load and then add to cache\n   */\n  prefetch(uri) {\n    if (uri == null) {\n      return;\n    }\n\n    if (Array.isArray(uri)) {\n      // Cubemap, check proper format\n      if (uri.length !== 6 || !uri[0].uri) {\n        console.warn(\n          'Prefetch expected cubemap source in format [{uri: http..}, {uri: http..}, ... ]'\n        );\n        return;\n      }\n      // Transform the input array into an array of url strings for threejs to load.\n      const urls = uri.map(function(x) {\n        return x.uri;\n      });\n\n      const loader = new THREE.CubeTextureLoader();\n      loader.setCrossOrigin('Access-Control-Allow-Origin');\n      loader.load(urls, texture => RCTPrefetch.addToCache(urls, texture), () => {}, () => {});\n    } else {\n      // Panorama\n      const loader = new THREE.TextureLoader();\n      loader.setCrossOrigin('Access-Control-Allow-Origin');\n      loader.load(uri, texture => RCTPrefetch.addToCache(uri, texture), () => {}, () => {});\n    }\n  }\n\n  /**\n   * addToCache\n   * Add a texture in the cache\n   */\n  static addToCache(uri, texture) {\n    if (!RCTPrefetch.cache) {\n      RCTPrefetch.cache = {};\n    }\n\n    RCTPrefetch.cache[uri] = texture;\n  }\n\n  /**\n   * isCached\n   */\n  static isCached(uri) {\n    return RCTPrefetch.cache && RCTPrefetch.cache.hasOwnProperty(uri);\n  }\n\n  /**\n   * getFromCache\n   */\n  static getFromCache(uri) {\n    return RCTPrefetch.cache && RCTPrefetch.cache[uri];\n  }\n\n  /**\n   * removeFromCache\n   */\n  static removeFromCache(uri) {\n    if (RCTPrefetch.cache) {\n      delete RCTPrefetch.cache[uri];\n    }\n  }\n\n  /**\n   * Dispose of any associated resources\n   */\n  dispose() {\n    super.dispose();\n    RCTPrefetch.removeFromCache(this.props.source);\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        source: 'string',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTLiveEnvCamera\n * Displays the environment facing camera on a sphere\n * @class RCTLiveEnvCamera\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\n// display texture always infront of the camera\nconst basic_vert = `\n      varying highp vec4 vUv;\n      void main()\n      {\n          vUv = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n          vUv.xy = (vUv.xy + vec2(vUv.w)) * 0.5;\n          gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n      }\n  `;\n\nconst basic_frag = `\n      uniform sampler2D map;\n      varying highp vec4 vUv;\n      void main()\n      {\n        gl_FragColor = texture2DProj( map, vUv );\n      }\n  `;\n\nconst SPHERE_RADIUS = 1000;\n\nconst sphereRayCast = (function() {\n  // avoid create temp objects;\n  const inverseMatrix = new THREE.Matrix4();\n  const ray = new THREE.Ray();\n  const sphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), SPHERE_RADIUS);\n  const intersectionPoint = new THREE.Vector3();\n  const intersectionPointWorld = new THREE.Vector3();\n  return function(raycaster, intersects) {\n    // transform the ray into the space of the sphere\n    inverseMatrix.getInverse(this.matrixWorld);\n    ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n    const intersect = ray.intersectSphere(sphere, intersectionPoint);\n    if (intersect === null) {\n      return;\n    }\n\n    // determine hit location in world space\n    intersectionPointWorld.copy(intersectionPoint);\n    intersectionPointWorld.applyMatrix4(this.matrixWorld);\n\n    const distance = raycaster.ray.origin.distanceTo(intersectionPointWorld);\n    if (distance < raycaster.near || distance > raycaster.far) {\n      return;\n    }\n\n    intersects.push({\n      distance: distance,\n      point: intersectionPointWorld.clone(),\n      object: this,\n    });\n  };\n})();\n\nexport default class RCTLiveEnvCamera extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super();\n\n    navigator.getUserMedia =\n      navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;\n\n    const constraints = {\n      video: {facingMode: {exact: 'environment'}},\n    };\n    const video = document.createElement('video');\n    const videoTexture = new THREE.Texture(video);\n    videoTexture.minFilter = THREE.LinearFilter;\n    this._video = video;\n    this._videoTexture = videoTexture;\n    navigator.getUserMedia(\n      constraints,\n      stream => {\n        video.src = window.URL.createObjectURL(stream);\n      },\n      error => {\n        console.log('navigator.getUserMedia error: ', error);\n      }\n    );\n\n    this._sphereGeometry = new THREE.SphereGeometry(SPHERE_RADIUS, 5, 5);\n    this._material = new THREE.ShaderMaterial({\n      uniforms: {\n        map: {\n          value: videoTexture,\n          type: 't',\n        },\n      },\n      vertexShader: basic_vert,\n      fragmentShader: basic_frag,\n      side: THREE.DoubleSide,\n    });\n\n    this._onUpdate = this._onUpdate.bind(this);\n\n    this._globe = new THREE.Mesh(this._sphereGeometry, this._material);\n    this._globe.raycast = sphereRayCast.bind(this._globe);\n    this._globe.rotation.y = -Math.PI / 2;\n    this._globe.onUpdate = this._onUpdate;\n\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(this._globe);\n  }\n\n  _onUpdate(scene, camera) {\n    if (this._video.readyState === this._video.HAVE_ENOUGH_DATA) {\n      this._videoTexture.needsUpdate = true;\n    }\n  }\n\n  presentLayout() {\n    super.presentLayout();\n    this._globe.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n  }\n\n  /**\n   * Dispose of any associated resources\n   */\n  dispose() {\n    if (this._localResource) {\n      this._localResource.dispose();\n    }\n    super.dispose();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {},\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport RCTBaseMesh from './BaseMesh';\nimport {createModelInstance} from '../Loaders/ModelLoaderRegistry';\nimport merge from '../Utils/merge';\n\nimport type {GuiSys} from 'ovrui';\nimport type {MeshInstance} from '../Loaders/ModelLoaderRegistry';\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\nexport default class RCTModel extends RCTBaseMesh {\n  instance: MeshInstance | null;\n\n  constructor(guiSys: GuiSys, rnctx: ReactNativeContext) {\n    super(guiSys, rnctx);\n    this.instance = null;\n\n    Object.defineProperty(\n      this.props,\n      'source',\n      ({\n        set: this._setSource.bind(this),\n      }: Object)\n    );\n  }\n\n  _setSource(value: {[key: string]: string}) {\n    if (this.instance) {\n      // attempt to update the current instance\n      if (this.instance.update(value)) {\n        return;\n      } else {\n        // can't update dispose and then recreate\n        this.instance && this.instance.dispose();\n      }\n    }\n    this.instance = createModelInstance(value, this.view, this._litMaterial, this._unlitMaterial);\n    this.instance && this.instance.setLit(this._lit);\n  }\n\n  _setLit(flag: boolean) {\n    this._lit = flag;\n\n    if (!this.instance) {\n      return;\n    }\n    this.instance.setLit(flag);\n  }\n\n  frame(timeStamp: number, deltaTime: number) {\n    if (!this.instance) {\n      return;\n    }\n    this.instance.frame(timeStamp, deltaTime);\n  }\n\n  dispose() {\n    if (this.instance) {\n      this.instance.dispose();\n    }\n    this.instance = null;\n    super.dispose();\n  }\n\n  static describe() {\n    return merge(super.describe(), {\n      // register the properties sent from react to runtime\n      NativeProps: {\n        source: 'object',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport * as THREE from 'three';\nimport type {UIView} from 'ovrui';\nimport ObjModelLoader from '../Loaders/ObjModelLoader';\nimport GLTF2ModelLoader from '../Loaders/GLTF2ModelLoader';\n\nexport interface MeshInstance {\n  // returns false if instance can't be updated and instances needs to be recreated\n  update(definition: any): boolean,\n\n  // already established apis\n  setLit(value: boolean): void,\n  setTexture(value: string): void,\n  setWireframe(value: boolean): void,\n\n  frame(timeStamp: number, deltaTime: number): void,\n\n  // todo\n  // support for animation\n  //getJointCount(): number;\n  //setJoints(joints: Array<THREE.Matrix4>): void;\n  //setChannelData(channel: string, value: any): void;\n  //findObjectJoint(name: string): number|null;\n\n  // will dispose of all internally allocated structure\n  dispose(): void,\n}\n\nexport interface ModelLoader {\n  // returns true if the loader can create an instance from this definition\n  canLoad(definition: any): boolean,\n\n  // create the instance\n  createInstance(\n    definition: any,\n    parent: UIView,\n    litMaterial: THREE.Material,\n    unlitMaterial: THREE.Material\n  ): MeshInstance | null,\n}\n\nconst modelLoaders: Array<ModelLoader> = [];\n\nexport function registerModelLoader(modelLoader: ModelLoader): void {\n  modelLoaders.push(modelLoader);\n}\n\nexport function createModelInstance(\n  modelDefinition: any,\n  parent: UIView,\n  litMaterial: THREE.Material,\n  unlitMaterial: THREE.Material\n): MeshInstance | null {\n  if (!modelLoaders) {\n    return null;\n  }\n  for (let index = 0; index < modelLoaders.length; index++) {\n    if (modelLoaders[index].canLoad(modelDefinition)) {\n      return modelLoaders[index].createInstance(\n        modelDefinition,\n        parent,\n        litMaterial,\n        unlitMaterial\n      );\n    }\n  }\n  return null;\n}\n// register the default obj loader\nregisterModelLoader(new GLTF2ModelLoader());\nregisterModelLoader(new ObjModelLoader());\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport {fetchAndCacheMTL, removeMTLReference} from '../Loaders/WavefrontOBJ/MTLLoader';\nimport {fetchAndCacheOBJ, removeOBJReference} from '../Loaders/WavefrontOBJ/OBJLoader';\nimport {\n  BufferAttribute,\n  BufferGeometry,\n  Group,\n  Mesh,\n  Material,\n  NoColors,\n  VertexColors,\n} from 'three';\nimport extractURL from '../Utils/extractURL';\nimport type {OBJParserState} from '../Loaders/WavefrontOBJ/OBJTypes';\nimport type {UIView} from 'ovrui';\n\nclass ObjMeshInstance {\n  _lit: boolean;\n\n  _objURL: string | null;\n  _mtlURL: string | null;\n  _objState: OBJParserState | null;\n  _update: number | null;\n  _materialMap: any;\n  _litMaterial: any;\n  _unlitMaterial: any;\n  _mesh: any;\n  _view: UIView;\n\n  constructor(value: any, parent: UIView, litMaterial: Material, unlitMaterial: Material) {\n    this._lit = true;\n    this._objURL = null;\n    this._mtlURL = null;\n    this._objState = null;\n    this._update = null;\n    this._view = parent;\n    this._mesh = null;\n    this._litMaterial = litMaterial;\n    this._unlitMaterial = unlitMaterial;\n\n    // This can be expanded to allow registration of new source types at runtime\n    // For now, hardcode support for OBJ / MTL\n    if (value.hasOwnProperty('obj')) {\n      let resource = null;\n      if (value.obj) {\n        const url = extractURL(value.obj);\n        if (!url) {\n          throw new Error('Invalid value for \"obj\" property: ' + JSON.stringify(value.obj));\n        }\n        resource = url;\n      }\n      if (resource !== this._objURL) {\n        this._setOBJ(resource);\n      }\n    }\n    if (value.hasOwnProperty('mtl')) {\n      let resource = null;\n      if (value.mtl) {\n        const url = extractURL(value.mtl);\n        if (!url) {\n          throw new Error('Invalid value for \"mtl\" property: ' + JSON.stringify(value.mtl));\n        }\n        resource = url;\n      }\n      if (resource !== this._mtlURL) {\n        this._setMTL(resource);\n      }\n    }\n  }\n\n  _setOBJ(value: string | null) {\n    if (!value) {\n      if (this._objURL) {\n        this._objState = null;\n        removeOBJReference(this._objURL);\n        this._objURL = null;\n      }\n      if (this._mesh) {\n        this._view.remove(this._mesh);\n        if (typeof this._mesh.dispose === 'function') {\n          this._mesh.dispose();\n        }\n        this._mesh = null;\n      }\n      return;\n    }\n\n    fetchAndCacheOBJ(value)\n      .then(\n        state => {\n          this._objURL = value;\n          this._objState = state;\n          if (this._mesh) {\n            this._view.remove(this._mesh);\n            if (typeof this._mesh.dispose === 'function') {\n              this._mesh.dispose();\n            }\n          }\n          if (this._view) {\n            this._mesh = this._updateMeshes();\n            this._view.add(this._mesh);\n          }\n        },\n        err => {\n          console.error('Failed to fetch resource: ' + JSON.stringify(value));\n        }\n      )\n      .catch(err => {\n        console.error('Failed to update mesh:', err);\n      });\n  }\n\n  _setMTL(value: string | null) {\n    if (!value) {\n      // Clean up existing materials\n      if (this._mtlURL) {\n        this._materialMap = null;\n        removeMTLReference(this._mtlURL);\n        this._mtlURL = null;\n      }\n      if (!this._mesh) {\n        return;\n      }\n      const material = this._lit ? this._litMaterial : this._unlitMaterial;\n      if (this._mesh.type === 'Group') {\n        this._mesh.children.forEach(c => {\n          c.material = material;\n        });\n      } else {\n        this._mesh.material = material;\n      }\n      return;\n    }\n\n    const url = extractURL(value);\n    if (!url) {\n      throw new Error('Invalid value for \"mtl\" property: ' + JSON.stringify(value));\n    }\n    fetchAndCacheMTL(url)\n      .then(\n        map => {\n          this._mtlURL = url;\n          this._materialMap = map;\n\n          if (this._mesh) {\n            this._updateMeshes(this._mesh);\n          }\n        },\n        err => {\n          console.error('Failed to fetch resource: ' + url);\n        }\n      )\n      .catch(err => {\n        console.error('Failed to update mesh:', err);\n      });\n  }\n\n  _updateMeshes(previousGroup?: Group) {\n    if (!this._objState) {\n      return;\n    }\n    const fallbackMaterial = this._lit ? this._litMaterial : this._unlitMaterial;\n    const group = previousGroup || new Group();\n    let index = 0;\n    this._objState.objects.forEach(obj => {\n      const geometry = obj.geometry;\n      if (geometry.position.length < 1) {\n        return;\n      }\n      const materials = obj.materials\n        // Eliminate materials that don't have any faces\n        .filter(m => m.startGroup < m.endGroup || m.endGroup < 0);\n      const bufferGeometry = previousGroup ? null : new BufferGeometry();\n      if (bufferGeometry) {\n        bufferGeometry.addAttribute(\n          'position',\n          new BufferAttribute(new Float32Array(geometry.position), 3)\n        );\n        bufferGeometry.setIndex(new BufferAttribute(new Uint32Array(geometry.index), 1));\n        if (geometry.hasUVs) {\n          bufferGeometry.addAttribute('uv', new BufferAttribute(new Float32Array(geometry.uv), 2));\n        }\n        if (geometry.hasNormals) {\n          bufferGeometry.addAttribute(\n            'normal',\n            new BufferAttribute(new Float32Array(geometry.normal), 3)\n          );\n        } else {\n          // Automatically compute vertex normals from face normals\n          bufferGeometry.computeVertexNormals();\n        }\n        if (geometry.hasVertexColors) {\n          bufferGeometry.addAttribute(\n            'color',\n            new BufferAttribute(new Float32Array(geometry.color), 3)\n          );\n\n          this._litMaterial.vertexColors = VertexColors;\n          this._unlitMaterial.vertexColors = VertexColors;\n        } else {\n          this._litMaterial.vertexColors = NoColors;\n          this._unlitMaterial.vertexColors = NoColors;\n        }\n      }\n\n      let material = fallbackMaterial;\n      if (materials.length === 1) {\n        // Use the only material\n        material = this._getMaterial(materials[0].name);\n        material.flatShading = !obj.smooth;\n      } else if (materials.length > 1) {\n        // Construct a multi-material\n        const multi = [];\n        for (let i = 0; i < materials.length; i++) {\n          let end = materials[i].endGroup;\n          if (end < 0) {\n            end = geometry.index.length;\n          }\n          const length = end - materials[i].startGroup;\n          if (length > 0) {\n            if (bufferGeometry) {\n              bufferGeometry.addGroup(materials[i].startGroup, length, i);\n            }\n            const mtr = this._getMaterial(materials[i].name);\n            mtr.flatShading = !obj.smooth;\n            multi.push(mtr);\n          }\n        }\n        material = multi;\n      }\n      if (previousGroup) {\n        const mesh = group.children[index];\n        if (mesh && mesh instanceof Mesh) {\n          mesh.material = material;\n        }\n      } else if (bufferGeometry) {\n        const mesh = new Mesh(bufferGeometry, material);\n        group.add(mesh);\n      }\n      index++;\n    });\n    return group;\n  }\n\n  _getMaterial(name: string) {\n    if (!this._materialMap) {\n      return this._lit ? this._litMaterial : this._unlitMaterial;\n    }\n    const material = this._materialMap[name];\n    if (!material) {\n      if (__DEV__) {\n        console.warn('OBJ attempted to load unknown material: ' + name);\n      }\n      return this._lit ? this._litMaterial : this._unlitMaterial;\n    }\n    return this._lit ? material.lit : material.unlit;\n  }\n\n  // returns false if instance can't be updated and instances needs to be recreated\n  update(definition: any): boolean {\n    return false;\n  }\n\n  // already established apis\n  setLit(flag: boolean): void {\n    const changed = this._lit !== flag;\n    this._lit = flag;\n    if (changed) {\n      this._updateMeshes(this._mesh);\n    }\n  }\n\n  setTexture(value: string): void {}\n  setWireframe(value: boolean): void {\n    if (__DEV__) {\n      console.log('Wireframe mode is not currently supported for OBJ models');\n    }\n  }\n\n  frame(timeStamp: number, deltaTime: number) {}\n\n  // will dispose of all internally allocated structure\n  dispose(): void {\n    if (this._mtlURL) {\n      this._materialMap = null;\n      removeMTLReference(this._mtlURL);\n      this._mtlURL = null;\n    }\n    if (this._objURL) {\n      this._objState = null;\n      removeOBJReference(this._objURL);\n      this._objURL = null;\n    }\n    if (this._mesh) {\n      this._view.remove(this._mesh);\n      if (typeof this._mesh.dispose === 'function') {\n        this._mesh.dispose();\n      }\n      this._mesh = null;\n    }\n    return;\n  }\n}\n\nexport default class ObjModelLoader {\n  // returns true if the loader can create an instance from this definition\n  canLoad(definition: any): boolean {\n    return definition && definition.hasOwnProperty('obj');\n  }\n\n  // create the instance\n  createInstance(\n    definition: any,\n    parent: UIView,\n    litMaterial: Material,\n    unlitMaterial: Material\n  ): ObjMeshInstance {\n    return new ObjMeshInstance(definition, parent, litMaterial, unlitMaterial);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport {readMTLFile} from './MTLParser';\nimport RefCountCache from '../../Utils/RefCountCache';\nimport fetchResource from '../../Utils/fetchResource';\nimport * as THREE from 'three';\n\nimport type {RawMTL, Texture} from './MTLParser';\nimport type {Material} from 'three';\n\ntype MaterialMap = {\n  [name: string]: {\n    lit: Material,\n    unlit: Material,\n  },\n};\n\n// We currently use MTLLoader as a singleton, but we may want to create one\n// per ReactNativeContext later on\nconst mtlStateCache: RefCountCache<MaterialMap> = new RefCountCache(\n  // Cleanup method\n  function(url, entry) {\n    for (const name in entry) {\n      entry[name].lit.dispose();\n      entry[name].unlit.dispose();\n    }\n  }\n);\nconst mtlLoaders: {[path: string]: Promise<MaterialMap>} = {};\n\n// Mapping from the param name to Three's initialization property name\nconst MAP_TO_THREE_NAME = {\n  bump: 'bumpMap',\n  diffuse: 'map',\n  displacement: 'displacementMap',\n  emissive: 'emissiveMap',\n  specular: 'specularMap',\n};\n\n/**\n * addTextureMap loads an external texture file, generates a Three.js Texture\n * from it, and applies the appropriate parameters.\n */\nfunction addTextureMap(\n  directory: string,\n  params: {[key: string]: any},\n  type: string,\n  tex: Texture\n): void {\n  const mapParam = MAP_TO_THREE_NAME[type] || type;\n  if (params[mapParam]) {\n    // Use the first definition of each map type\n    return;\n  }\n  // Load the file, relative to the directory of the MTL file.\n  const path = directory + tex.file;\n  const scale = new THREE.Vector2(tex.options.scale[0], tex.options.scale[1]);\n  const offset = new THREE.Vector2(tex.options.origin[0], tex.options.origin[1]);\n  if (type === 'bump') {\n    if (tex.options.bumpMultiplier) {\n      params.bumpScale = tex.options.bumpMultiplier;\n    }\n  }\n  const loader = new THREE.TextureLoader(THREE.DefaultLoadingManager);\n  loader.setCrossOrigin('anonymous');\n  const map = loader.load(path);\n  map.name = tex.file;\n  map.repeat.copy(scale);\n  map.offset.copy(offset);\n  if (tex.options.clamp) {\n    map.wrapS = THREE.ClampToEdgeWrapping;\n    map.wrapT = THREE.ClampToEdgeWrapping;\n  } else {\n    map.wrapS = THREE.RepeatWrapping;\n    map.wrapT = THREE.RepeatWrapping;\n  }\n  params[mapParam] = map;\n}\n\n/**\n * createMaterial takes the intermediate parsed form of a material from a MTL\n * file and constructs a Three.js Material out of it.\n */\nfunction createMaterial(url: string, raw: RawMTL, forceBasic: boolean = false): Material {\n  const params: {[key: string]: any} = {\n    name: raw.name,\n  };\n  const mtlDirectory = url.substr(0, url.lastIndexOf('/') + 1);\n  const isPhong = !forceBasic && raw.illum !== 0 && raw.illum !== 1;\n  if (raw.specular) {\n    // Specular only supported on Phong\n    if (isPhong) {\n      params.specular = new THREE.Color(raw.specular[0], raw.specular[1], raw.specular[2]);\n    }\n  }\n  if (raw.diffuse) {\n    params.color = new THREE.Color(raw.diffuse[0], raw.diffuse[1], raw.diffuse[2]);\n  }\n  if (raw.emissive) {\n    if (!forceBasic) {\n      params.emissive = new THREE.Color(raw.emissive[0], raw.emissive[1], raw.emissive[2]);\n    }\n  }\n  if (raw.specularExp) {\n    if (!forceBasic) {\n      params.shininess = raw.specularExp;\n    }\n  }\n  if (raw.vertexColors) {\n    params.vertexColors = raw.vertexColors;\n  }\n  if (raw.wireframe) {\n    params.wireframe = raw.wireframe;\n  }\n  if (raw.color) {\n    params.color = raw.color;\n  }\n  if (raw.textureMap) {\n    // Load each of the external texture images used by this material\n    for (const type in raw.textureMap) {\n      addTextureMap(mtlDirectory, params, type, raw.textureMap[type]);\n    }\n  }\n  if (params.ambient && !isPhong) {\n    // ambient texture only supported on Phong\n    delete params.ambient;\n  }\n\n  // If lighting is disabled, we use a Basic Material.\n  // If lighting is enabled, the material is determined by the illumination\n  // mode declared in the MTL file, defaulting to Phong is no mode is declared.\n  const material = forceBasic\n    ? new THREE.MeshBasicMaterial(params)\n    : raw.illum === 0 || raw.illum === 1\n        ? new THREE.MeshLambertMaterial(params)\n        : new THREE.MeshPhongMaterial(params);\n  if (raw.opacity && raw.opacity < 1.0) {\n    material.transparent = true;\n    material.opacity = raw.opacity;\n  }\n  material.url = url;\n  return material;\n}\n\nexport function fetchAndCacheMTL(mtl: string) {\n  if (mtlStateCache.has(mtl)) {\n    mtlStateCache.addReference(mtl);\n    return Promise.resolve(mtlStateCache.get(mtl));\n  }\n\n  // Make sure we only load + parse parallel MTL requests once\n  let mtlLoader = mtlLoaders[mtl];\n\n  if (!mtlLoader) {\n    mtlLoader = fetchResource(mtl)\n      .then(text => {\n        return readMTLFile(text);\n      })\n      .then(state => {\n        const map: MaterialMap = {};\n        for (const raw of state) {\n          map[raw.name] = {\n            lit: createMaterial(mtl, raw, false),\n            unlit: createMaterial(mtl, raw, true),\n          };\n        }\n        return map;\n      });\n    mtlLoaders[mtl] = mtlLoader;\n  }\n\n  return mtlLoader.then(materialMap => {\n    if (mtlStateCache.has(mtl)) {\n      mtlStateCache.addReference(mtl);\n    } else {\n      mtlStateCache.addEntry(mtl, materialMap);\n    }\n    if (mtl in mtlLoaders) {\n      delete mtlLoaders[mtl];\n    }\n    return materialMap;\n  });\n}\n\nexport function removeMTLReference(key: string) {\n  mtlStateCache.removeReference(key);\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * MTLParser handles the parsing of Waveform MTL files.\n * It reads through the string contents of a MTL file and produces an array\n * of materials declared in the file. This can be consumed by external loaders\n * to create proper materials for any rendering engine.\n */\ntype Channels = Array<number>;\nexport type TextureOptions = {\n  blendu: boolean,\n  blendv: boolean,\n  boost?: number,\n  brightness: number,\n  contrast: number,\n  origin: [number, number, number],\n  scale: [number, number, number],\n  turbulence: [number, number, number],\n  texRes?: string,\n  clamp: boolean,\n  bumpMultiplier?: number,\n  imfchan?: 'r' | 'g' | 'b' | 'm' | 'l' | 'z',\n  type?:\n    | 'sphere'\n    | 'cube_top'\n    | 'cube_bottom'\n    | 'cube_front'\n    | 'cube_back'\n    | 'cube_left'\n    | 'cube_right',\n};\nexport type Texture = {\n  file: string,\n  options: TextureOptions,\n};\nexport type RawMTL = {\n  name: string,\n  ambient?: Channels,\n  specular?: Channels,\n  diffuse?: Channels,\n  emissive?: Channels,\n  opacity?: number,\n  illum?: number,\n  specularExp?: number,\n  textureMap?: {\n    ambient?: Texture,\n    specular?: Texture,\n    diffuse?: Texture,\n    emissive?: Texture,\n    specularExp?: Texture,\n    bump?: Texture,\n    displacement?: Texture,\n    decal?: Texture,\n  },\n};\nexport type MTLParserState = Array<RawMTL>;\n\nconst CHANNELS_TEST = /^\\s+([\\d\\.]+)\\s+([\\d\\.]+)\\s+([\\d\\.]+)/;\n\n/**\n * readChannels reads in a triplet of R/G/B values, ranging from 0 to 1.\n * It returns an array containing these values, and throws an error if they\n * cannot be parsed.\n */\nexport function readChannels(remainder: string, lineNumber: number): Array<number> {\n  const match = remainder.match(CHANNELS_TEST);\n  if (!match) {\n    throw new Error('Expected a series of numbers on line ' + lineNumber);\n  }\n  const points = [parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3])];\n  if (isNaN(points[0]) || isNaN(points[1]) || isNaN(points[2])) {\n    throw new Error('Invalid number on line ' + lineNumber);\n  }\n  for (let i = 0; i < points.length; i++) {\n    if (points[i] < 0) {\n      points[i] = 0;\n    } else if (points[i] > 1) {\n      points[i] = 1;\n    }\n  }\n  return points;\n}\n\n/**\n * readTextureOptions parses the flags that may be defined when a texture map\n * is declared. It skips any flags it does not recognize, so vendor-specific\n * extensions of the spec can be safely handled.\n * It returns an object containing the gathered parameters, providing\n * map-specific defaults where appropriate.\n */\nexport function readTextureOptions(remainder: string): Texture {\n  const args = remainder.split(/\\s+/);\n  const options: TextureOptions = {\n    blendu: true,\n    blendv: true,\n    brightness: 0,\n    contrast: 1,\n    origin: [0, 0, 0],\n    scale: [1, 1, 1],\n    turbulence: [0, 0, 0],\n    clamp: false,\n  };\n  const file = args[args.length - 1];\n  let index = 0;\n  while (index < args.length - 1) {\n    const opt = args[index];\n    if (opt[0] !== '-') {\n      index++;\n      continue;\n    }\n    if (opt === '-blendu') {\n      const flag = args[index + 1];\n      if (flag === 'on') {\n        options.blendu = true;\n      } else if (flag === 'off') {\n        options.blendu = false;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-blendv') {\n      const flag = args[index + 1];\n      if (flag === 'on') {\n        options.blendv = true;\n      } else if (flag === 'off') {\n        options.blendv = false;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-boost') {\n      const boost = parseFloat(args[index + 1]);\n      if (!isNaN(boost)) {\n        options.boost = boost;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-mm') {\n      const base = parseFloat(args[index + 1]);\n      const gain = parseFloat(args[index + 2]);\n      if (!isNaN(base) && !isNaN(gain)) {\n        options.brightness = base;\n        options.contrast = gain;\n      }\n      index += 3;\n      continue;\n    }\n    // -o, -s, and -t may provide one, two, or three values\n    if (opt === '-o') {\n      index++;\n      const u = parseFloat(args[index]);\n      index++;\n      if (isNaN(u)) {\n        continue;\n      }\n      options.origin[0] = u;\n      if (args[index][0] !== '-') {\n        const v = parseFloat(args[index]);\n        index++;\n        if (isNaN(v)) {\n          continue;\n        }\n        options.origin[1] = v;\n        if (args[index][0] !== '-') {\n          const w = parseFloat(args[index]);\n          index++;\n          if (isNaN(w)) {\n            continue;\n          }\n          options.origin[2] = w;\n        }\n      }\n      continue;\n    }\n    if (opt === '-s') {\n      index++;\n      const u = parseFloat(args[index]);\n      index++;\n      if (isNaN(u)) {\n        continue;\n      }\n      options.scale[0] = u;\n      if (args[index][0] !== '-') {\n        const v = parseFloat(args[index]);\n        index++;\n        if (isNaN(v)) {\n          continue;\n        }\n        options.scale[1] = v;\n        if (args[index][0] !== '-') {\n          const w = parseFloat(args[index]);\n          index++;\n          if (isNaN(w)) {\n            continue;\n          }\n          options.scale[2] = w;\n        }\n      }\n      continue;\n    }\n    if (opt === '-t') {\n      index++;\n      const u = parseFloat(args[index]);\n      index++;\n      if (isNaN(u)) {\n        continue;\n      }\n      options.turbulence[0] = u;\n      if (args[index][0] !== '-') {\n        const v = parseFloat(args[index]);\n        index++;\n        if (isNaN(v)) {\n          continue;\n        }\n        options.turbulence[1] = v;\n        if (args[index][0] !== '-') {\n          const w = parseFloat(args[index]);\n          index++;\n          if (isNaN(w)) {\n            continue;\n          }\n          options.turbulence[2] = w;\n        }\n      }\n      continue;\n    }\n    if (opt === '-texres') {\n      const res = args[index + 1];\n      options.texRes = res;\n      index += 2;\n      continue;\n    }\n    if (opt === '-clamp') {\n      const flag = args[index + 1];\n      if (flag === 'on') {\n        options.clamp = true;\n      } else if (flag === 'off') {\n        options.clamp = false;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-bm') {\n      const mult = parseFloat(args[index + 1]);\n      if (!isNaN(mult)) {\n        options.bumpMultiplier = mult;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-imfchan') {\n      const chan = args[index + 1];\n      if (\n        // Explicit checks for flowtype safety\n        chan === 'r' ||\n        chan === 'g' ||\n        chan === 'b' ||\n        chan === 'm' ||\n        chan === 'l' ||\n        chan === 'z'\n      ) {\n        options.imfchan = chan;\n      }\n      index += 2;\n      continue;\n    }\n    if (opt === '-type') {\n      const type = args[index + 1];\n      if (\n        // Explicit checks for flowtype safety\n        type === 'sphere' ||\n        type === 'cube_top' ||\n        type === 'cube_bottom' ||\n        type === 'cube_front' ||\n        type === 'cube_back' ||\n        type === 'cube_left' ||\n        type === 'cube_right'\n      ) {\n        options.type = type;\n      }\n      index += 2;\n      continue;\n    }\n    // No match\n    index++;\n  }\n  return {file, options};\n}\n\n/**\n * readLine parses a single line of a MTL file. It updates the state object\n * according to any supported declarations that are encountered on that line.\n */\nexport function readLine(state: MTLParserState, line: string, lineNumber: number) {\n  let index = 0;\n  const length = line.length;\n  while ((index < length && line[index] === ' ') || line[index] === '\\t') {\n    index++;\n  }\n  if (index >= length) {\n    return;\n  }\n  const first = line[index];\n  if (first === '#') {\n    return;\n  }\n  const latest = state[state.length - 1];\n  if (first === 'K') {\n    if (line[index + 1] === 'a') {\n      const channels = readChannels(line.substr(index + 2), lineNumber);\n      latest.ambient = channels;\n      return;\n    }\n    if (line[index + 1] === 'd') {\n      const channels = readChannels(line.substr(index + 2), lineNumber);\n      latest.diffuse = channels;\n      return;\n    }\n    if (line[index + 1] === 's') {\n      const channels = readChannels(line.substr(index + 2), lineNumber);\n      latest.specular = channels;\n      return;\n    }\n    if (line[index + 1] === 'e') {\n      const channels = readChannels(line.substr(index + 2), lineNumber);\n      latest.emissive = channels;\n    }\n  }\n  if (first === 'd') {\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      let density = parseFloat(line.substr(index + 2).trim());\n      if (isNaN(density)) {\n        throw new Error('Density must be a number');\n      }\n      if (density < 0) {\n        density = 0;\n      } else if (density > 1) {\n        density = 1;\n      }\n      latest.opacity = density;\n      return;\n    }\n  }\n  if (first === 'T') {\n    if (line[index + 1] === 'r') {\n      let transparency = parseFloat(line.substr(index + 2).trim());\n      if (isNaN(transparency)) {\n        throw new Error('Transparency must be a number');\n      }\n      if (transparency < 0) {\n        transparency = 0;\n      } else if (transparency > 1) {\n        transparency = 1;\n      }\n      latest.opacity = 1 - transparency;\n      return;\n    }\n  }\n  if (first === 'N') {\n    if (line[index + 1] === 's') {\n      const specularExp = parseFloat(line.substr(index + 2).trim());\n      if (isNaN(specularExp)) {\n        throw new Error('Specular exponent must be a number');\n      }\n      latest.specularExp = specularExp;\n      return;\n    }\n  }\n  if (first === 'n') {\n    if (line.substr(index, 6) === 'newmtl') {\n      const mtl = line.substr(index + 7).trim();\n      if (mtl.length < 1) {\n        throw new Error('newmtl must provide a material name on line ' + lineNumber);\n      }\n      state.push({\n        name: mtl,\n      });\n      return;\n    }\n    throw new Error('Unknown identifier: u');\n  }\n  if (first === 'i') {\n    if (line.substr(index, 5) === 'illum') {\n      const mode = parseInt(line.substr(index + 6).trim(), 10);\n      if (isNaN(mode)) {\n        throw new Error('Illumination mode must be a number on line ' + lineNumber);\n      }\n      latest.illum = mode;\n    }\n  }\n  if (first === 'm') {\n    const command = line.substr(index, 6).toLowerCase();\n    if (command === 'map_ka') {\n      const tex = readTextureOptions(line.substr(index + 6).trim());\n      if (tex.file) {\n        if (!latest.textureMap) {\n          latest.textureMap = {};\n        }\n        latest.textureMap.ambient = tex;\n      }\n      return;\n    }\n    if (command === 'map_kd') {\n      const tex = readTextureOptions(line.substr(index + 6).trim());\n      if (tex.file) {\n        if (!latest.textureMap) {\n          latest.textureMap = {};\n        }\n        latest.textureMap.diffuse = tex;\n      }\n    }\n    if (command === 'map_ks') {\n      const tex = readTextureOptions(line.substr(index + 6).trim());\n      if (tex.file) {\n        if (!latest.textureMap) {\n          latest.textureMap = {};\n        }\n        latest.textureMap.specular = tex;\n      }\n    }\n    if (command === 'map_ns') {\n      const tex = readTextureOptions(line.substr(index + 6).trim());\n      if (tex.file) {\n        if (!latest.textureMap) {\n          latest.textureMap = {};\n        }\n        latest.textureMap.specularExp = tex;\n      }\n    }\n  }\n  if (line.substr(index, 8).toLowerCase() === 'map_bump') {\n    const tex = readTextureOptions(line.substr(index + 8).trim());\n    if (tex.file) {\n      if (!latest.textureMap) {\n        latest.textureMap = {};\n      }\n      if (!tex.options.imfchan) {\n        tex.options.imfchan = 'l';\n      }\n      latest.textureMap.bump = tex;\n    }\n  }\n  if (line.substr(index, 4).toLowerCase() === 'bump') {\n    const tex = readTextureOptions(line.substr(index + 4).trim());\n    if (tex.file) {\n      if (!latest.textureMap) {\n        latest.textureMap = {};\n      }\n      if (!tex.options.imfchan) {\n        tex.options.imfchan = 'l';\n      }\n      latest.textureMap.bump = tex;\n    }\n  }\n  if (line.substr(index, 4).toLowerCase() === 'disp') {\n    const tex = readTextureOptions(line.substr(index + 4).trim());\n    if (tex.file) {\n      if (!latest.textureMap) {\n        latest.textureMap = {};\n      }\n      latest.textureMap.displacement = tex;\n    }\n  }\n  if (line.substr(index, 5).toLowerCase() === 'decal') {\n    const tex = readTextureOptions(line.substr(index + 5).trim());\n    if (tex.file) {\n      if (!latest.textureMap) {\n        latest.textureMap = {};\n      }\n      latest.textureMap.decal = tex;\n    }\n  }\n}\n\n/**\n * readMTLFile is the entry point for the MTLParser. It takes the text contents\n * of a MTL file and returns a Promise that is resolved with the intermediate\n * state extracted from that file.\n */\nexport function readMTLFile(data: string): Promise<MTLParserState> {\n  const state = [];\n  // Normalize linebreaks\n  if (data.indexOf('\\r\\n') > -1) {\n    data = data.replace('\\r\\n', '\\n');\n  }\n  const lines = data.split('\\n');\n  const length = lines.length;\n  let index = 0;\n  return new Promise((resolve, reject) => {\n    const chunk = function() {\n      const start = Date.now();\n      while (Date.now() - start < 16 && index < length) {\n        try {\n          readLine(state, lines[index], index + 1);\n          index++;\n        } catch (e) {\n          reject(e);\n        }\n      }\n      if (index >= length) {\n        resolve(state);\n      } else {\n        // Schedule the next piece of work at the end of the event queue\n        setTimeout(chunk, 0);\n      }\n    };\n    chunk();\n  });\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nexport type FetchResourceOptions = {\n  responseType?: 'string' | 'arraybuffer',\n};\n\n/**\n * Promise wrapper around a simple GET request, ideal for fetching external\n * text and binary resources.\n */\nexport default function fetchResource(url: string, options: FetchResourceOptions = {}) {\n  return new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest();\n    req.addEventListener('load', () => {\n      const response = req.response;\n      if (req.status === 200) {\n        resolve(response);\n      } else {\n        reject(response);\n      }\n    });\n\n    req.open('GET', url);\n    if (options.responseType === 'arraybuffer') {\n      req.responseType = 'arraybuffer';\n    }\n    req.send();\n  });\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport {readOBJFile} from './OBJParser';\nimport RefCountCache from '../../Utils/RefCountCache';\nimport fetchResource from '../../Utils/fetchResource';\n\nimport type {OBJParserState} from './OBJTypes';\n\n// We currently use OBJLoader as a singleton, but we may want to create one\n// per ReactNativeContext later on\nconst objStateCache: RefCountCache<OBJParserState> = new RefCountCache();\nconst objLoaders: {[path: string]: Promise<OBJParserState>} = {};\n\nexport function fetchAndCacheOBJ(obj: string): Promise<OBJParserState> {\n  if (objStateCache.has(obj)) {\n    objStateCache.addReference(obj);\n    return Promise.resolve(objStateCache.get(obj));\n  }\n\n  // Make sure we only load + parse parallel OBJ requests once\n  let objLoader = objLoaders[obj];\n\n  if (!objLoader) {\n    objLoader = fetchResource(obj).then(text => readOBJFile(text));\n    objLoaders[obj] = objLoader;\n  }\n\n  return objLoader.then(state => {\n    if (objStateCache.has(obj)) {\n      objStateCache.addReference(obj);\n    } else {\n      objStateCache.addEntry(obj, state);\n    }\n    // Perform cleanup of the Promise after adding an entry to the cache.\n    // If cleanup were performed at the end of the original Loader promise,\n    // there would be one event tick between removing the loader and adding\n    // the cache entry, allowing a (slim) chance for an unnecessary second load.\n    if (obj in objLoaders) {\n      delete objLoaders[obj];\n    }\n    return state;\n  });\n}\n\nexport function removeOBJReference(key: string) {\n  objStateCache.removeReference(key);\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n  * OBJParser handles the parsing of Waveform OBJ files.\n  * It reads through the string contents of an OBJ file and produces a state\n  * object containing information declared in the file. This can be consumed by\n  * external loaders to create proper meshes for any rendering engine.\n  */\n\nimport OBJGroup from './OBJGroup';\n\nimport type {OBJParserState} from './OBJTypes';\n\nconst POINTS_TEST = /^\\s+(-?[\\d\\.e+-]+)\\s+(-?[\\d\\.e+-]+)\\s+(-?[\\d\\.e+-]+)/;\nconst TEXTURE_POINTS_TEST = /^\\s+(-?[\\d\\.e+-]+)\\s+(-?[\\d\\.e+-]+)/;\nconst PAIR_TEST = /^\\s*(-?\\d+)(\\/-?\\d+)?\\s*/;\nconst TRIPLET_TEST = /^\\s*(-?\\d+)\\/?(-?\\d+)?(\\/-?\\d+)?\\s*/;\nconst SMOOTHING_TEST = /^\\s*(\\d+|on|off)/;\n\n/**\n * readPoints reads a series of three floating-point numbers, returning them\n * as an array. It throws an error if anything unexpected is encountered, or if\n * there are not three numbers to read.\n */\nexport function readPoints(remainder: string, lineNumber: number): Array<number> {\n  const match = remainder.match(POINTS_TEST);\n  if (!match) {\n    throw new Error('Expected a series of numbers on line ' + lineNumber);\n  }\n  const points = [parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3])];\n  if (isNaN(points[0]) || isNaN(points[1]) || isNaN(points[2])) {\n    throw new Error('Invalid number on line ' + lineNumber);\n  }\n  if (match[0].length < remainder.length) {\n    // There are potentially more points to read\n    // We only want to support the 6-values case, which is used for vertex color\n    const colorMatch = remainder.substr(match[0].length).match(POINTS_TEST);\n    if (colorMatch) {\n      const color = [\n        parseFloat(colorMatch[1]),\n        parseFloat(colorMatch[2]),\n        parseFloat(colorMatch[3]),\n      ];\n      if (isNaN(color[0]) || isNaN(color[1]) || isNaN(color[2])) {\n        throw new Error('Invalid number on line ' + lineNumber);\n      }\n      points.push(color[0], color[1], color[2]);\n    }\n  }\n  return points;\n}\n\n/**\n * readTexturePoints reads two floating-point numbers from a substring,\n * returning them as an array. It throws an error if anything unexpected is\n * encountered, or if there are not two numbers to read.\n */\nexport function readTexturePoints(remainder: string, lineNumber: number): [number, number] {\n  const match = remainder.match(TEXTURE_POINTS_TEST);\n  if (!match) {\n    throw new Error('Expected a series of numbers on line ' + lineNumber);\n  }\n  const points = [parseFloat(match[1]), parseFloat(match[2])];\n  if (isNaN(points[0]) || isNaN(points[1])) {\n    throw new Error('Invalid number on line ' + lineNumber);\n  }\n  return points;\n}\n\n/**\n * readPairs parses a series of numbers of the format 'a/b', where b may not be\n * provided. This is used to parse the vertex index and potential uv index for\n * a series of points in a line declaration.\n * It returns the pairs as an array of length-2 arrays, and throws if anything\n * unexpected is encountered.\n */\nexport function readPairs(remainder: string, lineNumber: number): Array<[number, number]> {\n  const pairs = [];\n  while (remainder.length > 0) {\n    const match = remainder.match(PAIR_TEST);\n    if (!match) {\n      throw new Error('Expected a vertex id on line ' + lineNumber);\n    }\n    const fullMatch = match[0];\n    const vertex = parseInt(match[1], 10);\n    const texture = match[2] ? parseInt(match[2].substr(1), 10) : 0;\n    if (isNaN(vertex)) {\n      throw new Error('Invalid vertex id on line ' + lineNumber);\n    }\n    if (isNaN(texture)) {\n      throw new Error('Invalid texture point id on line ' + lineNumber);\n    }\n    pairs.push([vertex, texture]);\n    remainder = remainder.substr(fullMatch.length);\n  }\n  return pairs;\n}\n\n/**\n * readTriplets parses a series of numbers of the format 'a/b/c', where b and c\n * may not be provided. This is used to parse the vertex index, potential uv\n * index, and potential normal index for a series of points in a face\n * declaration.\n * It returns the triplets as an array of length-3 arrays, and throws if\n * anything unexpected is encountered.\n */\nexport function readTriplets(\n  remainder: string,\n  lineNumber: number\n): Array<[number, number, number]> {\n  const triplets = [];\n  while (remainder.length > 0) {\n    const match = remainder.match(TRIPLET_TEST);\n    if (!match) {\n      throw new Error('Expected a vertex id on line ' + lineNumber);\n    }\n    const fullMatch = match[0];\n    const vertex = parseInt(match[1], 10);\n    const texture = match[2] ? parseInt(match[2], 10) : 0;\n    const normal = match[3] ? parseInt(match[3].substr(1), 10) : 0;\n    if (isNaN(vertex)) {\n      throw new Error('Invalid vertex id on line ' + lineNumber);\n    }\n    if (isNaN(texture)) {\n      throw new Error('Invalid texture point id on line ' + lineNumber);\n    }\n    if (isNaN(normal)) {\n      throw new Error('Invalid normal id on line ' + lineNumber);\n    }\n    triplets.push([vertex, texture, normal]);\n    remainder = remainder.substr(fullMatch.length);\n  }\n  return triplets;\n}\n\n/**\n * readLine parses a single line from an OBJ file. It updates the state object\n * with any declarations encountered on that line.\n */\nexport function readLine(state: OBJParserState, line: string, lineNumber: number) {\n  let index = 0;\n  const length = line.length;\n  while ((index < length && line[index] === ' ') || line[index] === '\\t') {\n    index++;\n  }\n  if (index >= length) {\n    return;\n  }\n  const first = line[index];\n  if (first === '#') {\n    return;\n  }\n  if (first === 'v') {\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      // Vertex declaration\n      const points = readPoints(line.substr(index + 1), lineNumber);\n      state.vertices.push(points);\n      return;\n    }\n    if (line[index + 1] === 'n') {\n      // Normal vector\n      const points = readPoints(line.substr(index + 2), lineNumber);\n      const normal = [points[0], points[1], points[2]];\n      state.normals.push(normal);\n      return;\n    }\n    if (line[index + 1] === 't') {\n      // Texture vertex\n      const points = readTexturePoints(line.substr(index + 2), lineNumber);\n      state.textureCoords.push(points);\n      return;\n    }\n    if (line[index + 1] === 'p') {\n      // Parametric curve point\n      throw new Error('Parametric curve points (vp) are currently unsupported');\n    }\n    throw new Error('Unknown identifier: v' + (index + 1 < line.length ? line[index + 1] : ''));\n  }\n  if (first === 'f') {\n    // Face declaration\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      const triplets = readTriplets(line.substr(index + 1), lineNumber);\n      state.currentObject.addFace(triplets);\n      return;\n    }\n    throw new Error('Unknown identifier: f' + (index + 1 < line.length ? line[index + 1] : ''));\n  }\n  if (first === 'l') {\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      // const pairs = readPairs(line.substr(index + 1), lineNumber);\n      // Lines are not currently supported\n      // state.currentObject.addLine(pairs);\n      return;\n    }\n    throw new Error('Unknown identifier: l' + (index + 1 < line.length ? line[index + 1] : ''));\n  }\n  if (first === 's') {\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      // Smoothing group\n      const match = line.substr(index + 1).match(SMOOTHING_TEST);\n      if (!match) {\n        throw new Error('Invalid smoothing flag on line ' + lineNumber);\n      }\n      const flag = match[1];\n      state.currentObject.setSmoothing(flag !== 'off');\n      return;\n    }\n    throw new Error('Unknown identifier: s' + (index + 1 < line.length ? line[index + 1] : ''));\n  }\n  if (first === 'g' || first === 'o') {\n    if (line[index + 1] === ' ' || line[index + 1] === '\\t') {\n      // New object group\n      const name = line.substr(2).trim();\n      const obj = new OBJGroup(state.vertices, state.textureCoords, state.normals, name);\n      if (state.currentObject && state.currentObject.materials.length > 0) {\n        // Inherit the last material from the last object\n        const inherited = state.currentObject.materials[state.currentObject.materials.length - 1];\n        obj.addMaterial(inherited.name, inherited.lib);\n      }\n      state.objects.push(obj);\n      state.currentObject = obj;\n      return;\n    }\n  }\n  if (first === 'm') {\n    if (line.substr(index, 6) === 'mtllib') {\n      // Reference to an external MTL file\n      const path = line.substr(index + 7).trim();\n      if (path.length < 1) {\n        throw new Error('mtllib must provide a file path on line ' + lineNumber);\n      }\n      state.materialLibraries.push(path);\n      return;\n    }\n    throw new Error('Unknown identifier: m');\n  }\n  if (first === 'u') {\n    if (line.substr(index, 6) === 'usemtl') {\n      // Reference to a named material\n      const mtl = line.substr(index + 7).trim();\n      if (mtl.length < 1) {\n        throw new Error('usemtl must provide a material name on line ' + lineNumber);\n      }\n      const lib = state.materialLibraries[state.materialLibraries.length - 1];\n      state.currentObject.addMaterial(mtl, lib);\n      return;\n    }\n    throw new Error('Unknown identifier: u');\n  }\n}\n\nexport function readOBJFile(data: string): Promise<OBJParserState> {\n  const vertices = [];\n  const textureCoords = [];\n  const normals = [];\n  const starterObject = new OBJGroup(vertices, textureCoords, normals); // In case no object group is declared, we start with something\n  const state = {\n    vertices: vertices,\n    textureCoords: textureCoords,\n    normals: normals,\n    materialLibraries: [],\n    objects: [starterObject],\n    currentObject: starterObject,\n  };\n  // Normalize linebreaks\n  if (data.indexOf('\\r\\n') > -1) {\n    data = data.replace('\\r\\n', '\\n');\n  }\n  const lines = data.split('\\n');\n  const length = lines.length;\n  let index = 0;\n  return new Promise((resolve, reject) => {\n    const chunk = function() {\n      const start = Date.now();\n      while (Date.now() - start < 16 && index < length) {\n        try {\n          readLine(state, lines[index], index + 1);\n          index++;\n        } catch (e) {\n          reject(e);\n        }\n      }\n      if (index >= length) {\n        resolve(state);\n      } else {\n        setTimeout(chunk, 0);\n      }\n    };\n    chunk();\n  });\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport type {Face, TextureCoords, Vertex, MultiMaterial} from './OBJTypes';\n\ntype Geometry = {\n  position: Array<number>,\n  normal: Array<number>,\n  uv: Array<number>,\n  color: Array<number>,\n  hasNormals: boolean,\n  hasUVs: boolean,\n  hasVertexColors: boolean,\n  index: Array<number>,\n  indexedPositions: {[key: string]: number},\n};\n\n/**\n * OBJGroup represents a named group of vertices and faces, as denoted by the\n * 'g' or 'o' declarations in an OBJ file.\n * It contains references to all vertices, texture coordinates, and normals\n * declared for that object, as well as the geometry information that is passed\n * to GL. It contains references to materials, including the faces where they\n * began and ended, so that multi-materials can be supported.\n */\nexport default class OBJGroup {\n  name: string;\n  vertices: Array<Vertex>;\n  textureCoords: Array<TextureCoords>;\n  normals: Array<Vertex>;\n  geometry: Geometry;\n  smooth: boolean;\n  materials: Array<MultiMaterial>;\n\n  constructor(\n    vertices: Array<Vertex>,\n    textureCoords: Array<TextureCoords>,\n    normals: Array<Vertex>,\n    name: string = ''\n  ) {\n    this.name = name;\n    this.vertices = vertices;\n    this.textureCoords = textureCoords;\n    this.normals = normals;\n    this.smooth = false;\n    this.materials = [];\n    this.geometry = {\n      position: [],\n      normal: [],\n      uv: [],\n      color: [],\n      indexedPositions: {}, // Map of unique vertex hashes to their known index\n      index: [],\n      hasNormals: false,\n      hasUVs: false,\n      hasVertexColors: false,\n    };\n  }\n\n  setSmoothing(smooth: boolean) {\n    this.smooth = smooth;\n  }\n\n  addFace(face: Face) {\n    const positions = [];\n    const uvs = [];\n    const normals = [];\n    for (let i = 0; i < face.length; i++) {\n      positions.push(face[i][0] < 0 ? face[i][0] + this.vertices.length : face[i][0] - 1);\n      if (!face[i][1]) {\n        uvs.push(-1);\n      } else {\n        uvs.push(face[i][1] < 0 ? face[i][1] + this.vertices.length : face[i][1] - 1);\n        this.geometry.hasUVs = true;\n      }\n      if (!face[i][2]) {\n        normals.push(-1);\n      } else {\n        normals.push(face[i][2] < 0 ? face[i][2] + this.vertices.length : face[i][2] - 1);\n        this.geometry.hasNormals = true;\n      }\n    }\n    // Implement the face as a series of triangles\n    for (let iter = 1; iter + 1 < face.length; iter++) {\n      this._pushGeometryPoint(positions[0], uvs[0], normals[0]);\n      this._pushGeometryPoint(positions[iter], uvs[iter], normals[iter]);\n      this._pushGeometryPoint(positions[iter + 1], uvs[iter + 1], normals[iter + 1]);\n    }\n  }\n\n  /**\n   * Set a new material for the upcoming face declarations. Each material is\n   * associated with the index of the first face it applies to, and the last\n   * face. This is used to apply multiple materials to a single mesh.\n   */\n  addMaterial(name: string, lib: string) {\n    const currentGroup = this.geometry.index.length;\n    if (this.materials.length > 0) {\n      const last = this.materials[this.materials.length - 1];\n      last.endGroup = currentGroup;\n    }\n    this.materials.push({\n      name,\n      lib,\n      startGroup: currentGroup,\n      endGroup: -1,\n    });\n  }\n\n  _pushGeometryPoint(position: number, uv: number, normal: number) {\n    const vertex = this.vertices[position];\n    const textureCoord = uv < 0 ? [0, 0] : this.textureCoords[uv];\n    const norm = normal < 0 ? [0, 0, 1] : this.normals[normal];\n    const key = [position, uv, normal].join(',');\n    const knownIndex = this.geometry.indexedPositions[key];\n\n    if (knownIndex === undefined) {\n      // We have not encountered this vertex yet, so put it in position\n      const location = (this.geometry.position.length / 3) | 0;\n      this.geometry.position.push(vertex[0]);\n      this.geometry.position.push(vertex[1]);\n      this.geometry.position.push(vertex[2]);\n      this.geometry.uv.push(textureCoord[0]);\n      this.geometry.uv.push(textureCoord[1]);\n      this.geometry.normal.push(norm[0]);\n      this.geometry.normal.push(norm[1]);\n      this.geometry.normal.push(norm[2]);\n      this.geometry.index.push(location);\n      this.geometry.indexedPositions[key] = location;\n\n      if (vertex.length >= 6) {\n        this.geometry.color.push(vertex[3]);\n        this.geometry.color.push(vertex[4]);\n        this.geometry.color.push(vertex[5]);\n        this.geometry.hasVertexColors = true;\n      }\n    } else {\n      this.geometry.index.push(knownIndex);\n    }\n  }\n}\n","/*\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport * as THREE from 'three';\nimport extractURL from '../Utils/extractURL';\nimport type {UIView} from 'ovrui';\nimport type {Material} from 'three';\n\nimport GLTF2Loader from 'three-gltf2-loader';\nimport RefCountCache from '../Utils/RefCountCache';\n\nGLTF2Loader(THREE);\n\nfunction recursiveDispose(node) {\n  if (typeof node.dispose === 'function') {\n    node.dispose();\n  }\n  if (node.geometry) {\n    node.geometry.dispose();\n  }\n  if (node.material) {\n    node.material.dispose();\n  }\n  for (const child of node.children) {\n    recursiveDispose(child);\n  }\n}\n\nconst gltfStateCache: RefCountCache<any> = new RefCountCache(function(url, entry) {\n  recursiveDispose(entry.scene);\n});\nconst loadList = {};\n\nclass GLTF2MeshInstance {\n  url: string;\n  parent: any;\n  scene: any;\n  mixer: any;\n  timeStamp: number;\n  activeAnimations: any;\n  allAnimations: any;\n\n  constructor(definition: any, parent: UIView) {\n    this.url = extractURL(definition.gltf2) || '';\n    this.parent = parent;\n    this.mixer = null;\n    this.timeStamp = -1;\n    this.activeAnimations = {};\n    this.allAnimations = {};\n\n    const onLoad = gltf => {\n      if (gltfStateCache.has(this.url)) {\n        gltfStateCache.addReference(this.url);\n      } else {\n        // disabling until gltf clone issue is resolved\n        // https://github.com/mrdoob/three.js/issues/11573\n        //gltfStateCache.addEntry(this.url, gltf);\n      }\n      // https://github.com/mrdoob/three.js/issues/11573\n      //this.scene = gltf.scene.clone();\n      this.scene = gltf.scene;\n\n      this.mixer = new THREE.AnimationMixer(this.scene);\n\n      // load the animations into the mixer\n      const animations = gltf.animations;\n      if (animations && animations.length) {\n        for (let i = 0; i < animations.length; i++) {\n          const animation = animations[i];\n          this.allAnimations[animation.name] = this.mixer.clipAction(animation);\n        }\n      }\n\n      // apply the definition animation settings\n      this.updateAnimation(definition);\n\n      // need to wait a frame for other attributes to setup\n      // FIXME\n      requestAnimationFrame(() => {\n        parent.add(this.scene);\n      });\n    };\n\n    // file is ready and downloaded use the cache\n    if (gltfStateCache.has(this.url)) {\n      onLoad(gltfStateCache.get(this.url));\n      return;\n    }\n\n    // if started to download append the callback\n    if (loadList[this.url]) {\n      loadList[this.url].push(onLoad);\n      return;\n    }\n\n    // disabling as there a problems with cloning gltf models\n    // https://github.com/mrdoob/three.js/issues/11573\n    //loadList[this.url] = [onLoad];\n\n    // $FlowFixMe\n    const loader = new THREE.GLTF2Loader();\n    loader.load(\n      this.url,\n      gltf => {\n        onLoad(gltf);\n        /*for (const callback of loadList[this.url]) {\n          callback(gltf);\n        }\n        delete loadList[this.url];*/\n      },\n      () => {},\n      () => {\n        console.error('failed to load GLTF', this.url);\n        delete loadList[this.url];\n      }\n    );\n  }\n\n  updateAnimation(definition: any): void {\n    if (!definition.animations || definition.animations.length === 0) {\n      if (this.mixer) {\n        this.activeAnimations = {};\n        this.mixer.stopAllAction();\n      }\n      return;\n    }\n    // stop any leftover animations\n    const newActiveAnimations = {};\n    for (const key in definition.animations) {\n      const animName = 'animation_' + key;\n      newActiveAnimations[animName] = true;\n      // start animations which have yet to be started\n      if (this.allAnimations[animName]) {\n        const anim = this.allAnimations[animName];\n        const params = definition.animations[key];\n        if (params) {\n          anim.fadeIn(params.fadeTime ? params.fadeTime : 0);\n          anim.setEffectiveTimeScale(params.timeScale ? params.timeScale : 1);\n          anim.setEffectiveWeight(params.weight ? params.weight : 1);\n          if (params.syncWith && this.allAnimations[params.syncWith]) {\n            anim.syncWith(this.allAnimations[params.syncWith]);\n          }\n        }\n\n        if (!this.activeAnimations[animName]) {\n          anim.play();\n        }\n      }\n      delete this.activeAnimations[animName];\n    }\n    // stop any leftover animations\n    for (const key in this.activeAnimations) {\n      if (this.allAnimations[key]) {\n        this.allAnimations[key].stop();\n      }\n    }\n    this.activeAnimations = newActiveAnimations;\n  }\n\n  update(definition: any): boolean {\n    // we can update some params without the need to reload the instance\n    // if the url is the same let's assume the model hasn't changed\n    const newUrl = extractURL(definition.gltf2) || '';\n    if (newUrl !== this.url) {\n      return false;\n    }\n    // apply animation changes\n    this.updateAnimation(definition);\n    return true;\n  }\n\n  frame(timeStampMS: number, deltaTimeMS: number): void {\n    if (this.mixer) {\n      this.mixer.update(deltaTimeMS * 0.001);\n    }\n  }\n\n  // already established apis\n  setLit(flag: boolean): void {\n    if (__DEV__) {\n      console.log('Lit mode is not supported for GLTF2 models');\n    }\n  }\n\n  setTexture(value: string): void {\n    if (__DEV__) {\n      console.log('Texture mode is not supported for GLTF2 models');\n    }\n  }\n\n  setWireframe(value: boolean): void {\n    if (__DEV__) {\n      console.log('Wireframe mode is not supported for GLTF2 models');\n    }\n  }\n\n  dispose(): void {\n    if (this.scene) {\n      gltfStateCache.removeReference(this.url);\n      this.parent.remove(this.scene);\n      delete this.scene;\n    }\n  }\n}\n\nexport default class GLTF2ModelLoader {\n  // returns true if the loader can create an instance from this definition\n  canLoad(definition: any): boolean {\n    return definition && definition.hasOwnProperty('gltf2');\n  }\n\n  // create the instance\n  createInstance(\n    definition: any,\n    parent: UIView,\n    litMaterial: Material,\n    unlitMaterial: Material\n  ): GLTF2MeshInstance {\n    return new GLTF2MeshInstance(definition, parent);\n  }\n}\n","'use strict';\n\nmodule.exports = function (THREE) {\n\n\t/**\n\t * @author Rich Tibbett / https://github.com/richtr\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Tony Parisi / http://www.tonyparisi.com/\n\t * @author Takahiro / https://github.com/takahirox\n\t * @author Don McCurdy / https://www.donmccurdy.com\n\t */\n\n\tTHREE.GLTFLoader = ( function () {\n\n\t\tfunction GLTFLoader( manager ) {\n\n\t\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t\t}\n\n\t\tGLTFLoader.prototype = {\n\n\t\t\tconstructor: GLTFLoader,\n\n\t\t\tcrossOrigin: 'Anonymous',\n\n\t\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\t\tvar scope = this;\n\n\t\t\t\tvar path = this.path && ( typeof this.path === 'string' ) ? this.path : THREE.Loader.prototype.extractUrlBase( url );\n\n\t\t\t\tvar loader = new THREE.FileLoader( scope.manager );\n\n\t\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tscope.parse( data, path, onLoad, onError );\n\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// For SyntaxError or TypeError, return a generic failure message.\n\t\t\t\t\t\tonError( e.constructor === Error ? e : new Error( 'THREE.GLTFLoader: Unable to parse model.' ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t},\n\n\t\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\t\tthis.crossOrigin = value;\n\n\t\t\t},\n\n\t\t\tsetPath: function ( value ) {\n\n\t\t\t\tthis.path = value;\n\n\t\t\t},\n\n\t\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\t\tvar content;\n\t\t\t\tvar extensions = {};\n\n\t\t\t\tvar magic = convertUint8ArrayToString( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = convertUint8ArrayToString( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t\tvar json = JSON.parse( content );\n\n\t\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\t\tonError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\t\tif( json.extensionsUsed.indexOf( EXTENSIONS.KHR_LIGHTS ) >= 0 ) {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_LIGHTS ] = new GLTFLightsExtension( json );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif( json.extensionsUsed.indexOf( EXTENSIONS.KHR_MATERIALS_COMMON ) >= 0 ) {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] = new GLTFMaterialsCommonExtension( json );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif( json.extensionsUsed.indexOf( EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ) >= 0 ) {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconsole.time( 'GLTFLoader' );\n\n\t\t\t\tvar parser = new GLTFParser( json, extensions, {\n\n\t\t\t\t\tpath: path || this.path,\n\t\t\t\t\tcrossOrigin: this.crossOrigin\n\n\t\t\t\t} );\n\n\t\t\t\tparser.parse( function ( scene, scenes, cameras, animations ) {\n\n\t\t\t\t\tconsole.timeEnd( 'GLTFLoader' );\n\n\t\t\t\t\tvar glTF = {\n\t\t\t\t\t\tscene: scene,\n\t\t\t\t\t\tscenes: scenes,\n\t\t\t\t\t\tcameras: cameras,\n\t\t\t\t\t\tanimations: animations\n\t\t\t\t\t};\n\n\t\t\t\t\tonLoad( glTF );\n\n\t\t\t\t}, onError );\n\n\t\t\t}\n\n\t\t};\n\n\t\t/* GLTFREGISTRY */\n\n\t\tfunction GLTFRegistry() {\n\n\t\t\tvar objects = {};\n\n\t\t\treturn\t{\n\n\t\t\t\tget: function ( key ) {\n\n\t\t\t\t\treturn objects[ key ];\n\n\t\t\t\t},\n\n\t\t\t\tadd: function ( key, object ) {\n\n\t\t\t\t\tobjects[ key ] = object;\n\n\t\t\t\t},\n\n\t\t\t\tremove: function ( key ) {\n\n\t\t\t\t\tdelete objects[ key ];\n\n\t\t\t\t},\n\n\t\t\t\tremoveAll: function () {\n\n\t\t\t\t\tobjects = {};\n\n\t\t\t\t},\n\n\t\t\t\tupdate: function ( scene, camera ) {\n\n\t\t\t\t\tfor ( var name in objects ) {\n\n\t\t\t\t\t\tvar object = objects[ name ];\n\n\t\t\t\t\t\tif ( object.update ) {\n\n\t\t\t\t\t\t\tobject.update( scene, camera );\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\t/*********************************/\n\t\t/********** EXTENSIONS ***********/\n\t\t/*********************************/\n\n\t\tvar EXTENSIONS = {\n\t\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\t\tKHR_LIGHTS: 'KHR_lights',\n\t\t\tKHR_MATERIALS_COMMON: 'KHR_materials_common',\n\t\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness'\n\t\t};\n\n\t\t/**\n\t\t * Lights Extension\n\t\t *\n\t\t * Specification: PENDING\n\t\t */\n\t\tfunction GLTFLightsExtension( json ) {\n\n\t\t\tthis.name = EXTENSIONS.KHR_LIGHTS;\n\n\t\t\tthis.lights = {};\n\n\t\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS ] ) || {};\n\t\t\tvar lights = extension.lights || {};\n\n\t\t\tfor ( var lightId in lights ) {\n\n\t\t\t\tvar light = lights[ lightId ];\n\t\t\t\tvar lightNode;\n\n\t\t\t\tvar color = new THREE.Color().fromArray( light.color );\n\n\t\t\t\tswitch ( light.type ) {\n\n\t\t\t\t\tcase 'directional':\n\t\t\t\t\t\tlightNode = new THREE.DirectionalLight( color );\n\t\t\t\t\t\tlightNode.position.set( 0, 0, 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'point':\n\t\t\t\t\t\tlightNode = new THREE.PointLight( color );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'spot':\n\t\t\t\t\t\tlightNode = new THREE.SpotLight( color );\n\t\t\t\t\t\tlightNode.position.set( 0, 0, 1 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ambient':\n\t\t\t\t\t\tlightNode = new THREE.AmbientLight( color );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tif ( lightNode ) {\n\n\t\t\t\t\tif ( light.constantAttenuation !== undefined ) {\n\n\t\t\t\t\t\tlightNode.intensity = light.constantAttenuation;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( light.linearAttenuation !== undefined ) {\n\n\t\t\t\t\t\tlightNode.distance = 1 / light.linearAttenuation;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( light.quadraticAttenuation !== undefined ) {\n\n\t\t\t\t\t\tlightNode.decay = light.quadraticAttenuation;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( light.fallOffAngle !== undefined ) {\n\n\t\t\t\t\t\tlightNode.angle = light.fallOffAngle;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( light.fallOffExponent !== undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader:: light.fallOffExponent not currently supported.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlightNode.name = light.name || ( 'light_' + lightId );\n\t\t\t\t\tthis.lights[ lightId ] = lightNode;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/**\n\t\t * Common Materials Extension\n\t\t *\n\t\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_materials_common\n\t\t */\n\t\tfunction GLTFMaterialsCommonExtension( json ) {\n\n\t\t\tthis.name = EXTENSIONS.KHR_MATERIALS_COMMON;\n\n\t\t}\n\n\t\tGLTFMaterialsCommonExtension.prototype.getMaterialType = function ( material ) {\n\n\t\t\tvar khrMaterial = material.extensions[ this.name ];\n\n\t\t\tswitch ( khrMaterial.type ) {\n\n\t\t\t\tcase 'commonBlinn' :\n\t\t\t\tcase 'commonPhong' :\n\t\t\t\t\treturn THREE.MeshPhongMaterial;\n\n\t\t\t\tcase 'commonLambert' :\n\t\t\t\t\treturn THREE.MeshLambertMaterial;\n\n\t\t\t\tcase 'commonConstant' :\n\t\t\t\tdefault :\n\t\t\t\t\treturn THREE.MeshBasicMaterial;\n\n\t\t\t}\n\n\t\t};\n\n\t\tGLTFMaterialsCommonExtension.prototype.extendParams = function ( materialParams, material, parser ) {\n\n\t\t\tvar khrMaterial = material.extensions[ this.name ];\n\n\t\t\tvar pending = [];\n\n\t\t\tvar keys = [];\n\n\t\t\t// TODO: Currently ignored: 'ambientFactor', 'ambientTexture'\n\t\t\tswitch ( khrMaterial.type ) {\n\n\t\t\t\tcase 'commonBlinn' :\n\t\t\t\tcase 'commonPhong' :\n\t\t\t\t\tkeys.push( 'diffuseFactor', 'diffuseTexture', 'specularFactor', 'specularTexture', 'shininessFactor' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'commonLambert' :\n\t\t\t\t\tkeys.push( 'diffuseFactor', 'diffuseTexture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'commonConstant' :\n\t\t\t\tdefault :\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tvar materialValues = {};\n\n\t\t\tkeys.forEach( function( v ) {\n\n\t\t\t\tif ( khrMaterial[ v ] !== undefined ) materialValues[ v ] = khrMaterial[ v ];\n\n\t\t\t} );\n\n\t\t\tif ( materialValues.diffuseFactor !== undefined ) {\n\n\t\t\t\tmaterialParams.color = new THREE.Color().fromArray( materialValues.diffuseFactor );\n\t\t\t\tmaterialParams.opacity = materialValues.diffuseFactor[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( materialValues.diffuseTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', materialValues.diffuseTexture.index ) );\n\n\t\t\t}\n\n\t\t\tif ( materialValues.specularFactor !== undefined ) {\n\n\t\t\t\tmaterialParams.specular = new THREE.Color().fromArray( materialValues.specularFactor );\n\n\t\t\t}\n\n\t\t\tif ( materialValues.specularTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', materialValues.specularTexture.index ) );\n\n\t\t\t}\n\n\t\t\tif ( materialValues.shininessFactor !== undefined ) {\n\n\t\t\t\tmaterialParams.shininess = materialValues.shininessFactor;\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t};\n\n\t\t/* BINARY EXTENSION */\n\n\t\tvar BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF';\n\t\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\t\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\t\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\t\tfunction GLTFBinaryExtension( data ) {\n\n\t\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\t\tthis.content = null;\n\t\t\tthis.body = null;\n\n\t\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\t\tthis.header = {\n\t\t\t\tmagic: convertUint8ArrayToString( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\t\tlength: headerView.getUint32( 8, true )\n\t\t\t};\n\n\t\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use GLTFLoader instead.' );\n\n\t\t\t}\n\n\t\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\t\tvar chunkIndex = 0;\n\n\t\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\t\tchunkIndex += 4;\n\n\t\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\t\tchunkIndex += 4;\n\n\t\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\t\tthis.content = convertUint8ArrayToString( contentArray );\n\n\t\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t\t}\n\n\t\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\t\tchunkIndex += chunkLength;\n\n\t\t\t}\n\n\t\t\tif ( this.content === null ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t/**\n\t\t * Specular-Glossiness Extension\n\t\t *\n\t\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_materials_pbrSpecularGlossiness\n\t\t */\n\t\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\t\treturn {\n\n\t\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\t\tgetMaterialType: function () {\n\n\t\t\t\t\treturn THREE.ShaderMaterial;\n\n\t\t\t\t},\n\n\t\t\t\textendParams: function ( params, material, parser ) {\n\n\t\t\t\t\tvar pbrSpecularGlossiness = material.extensions[ this.name ];\n\n\t\t\t\t\tvar shader = THREE.ShaderLib[ 'standard' ];\n\n\t\t\t\t\tvar uniforms = THREE.UniformsUtils.clone( shader.uniforms );\n\n\t\t\t\t\tvar specularMapParsFragmentChunk = [\n\t\t\t\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t\t\t\t'#endif'\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t\t\t\t'#endif'\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tvar specularMapFragmentChunk = [\n\t\t\t\t\t\t'vec3 specularFactor = specular;',\n\t\t\t\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t\t\t\t'#endif'\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tvar glossinessMapFragmentChunk = [\n\t\t\t\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t\t\t\t'#endif'\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t\t\t\t'PhysicalMaterial material;',\n\t\t\t\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t\t\t\t'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );',\n\t\t\t\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tvar fragmentShader = shader.fragmentShader\n\t\t\t\t\t\t\t\t.replace( '#include <specularmap_fragment>', '' )\n\t\t\t\t\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t\t\t\t\t.replace( '#include <roughnessmap_pars_fragment>', specularMapParsFragmentChunk )\n\t\t\t\t\t\t\t\t.replace( '#include <metalnessmap_pars_fragment>', glossinessMapParsFragmentChunk )\n\t\t\t\t\t\t\t\t.replace( '#include <roughnessmap_fragment>', specularMapFragmentChunk )\n\t\t\t\t\t\t\t\t.replace( '#include <metalnessmap_fragment>', glossinessMapFragmentChunk )\n\t\t\t\t\t\t\t\t.replace( '#include <lights_physical_fragment>', lightPhysicalFragmentChunk );\n\n\t\t\t\t\tdelete uniforms.roughness;\n\t\t\t\t\tdelete uniforms.metalness;\n\t\t\t\t\tdelete uniforms.roughnessMap;\n\t\t\t\t\tdelete uniforms.metalnessMap;\n\n\t\t\t\t\tuniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) };\n\t\t\t\t\tuniforms.glossiness = { value: 0.5 };\n\t\t\t\t\tuniforms.specularMap = { value: null };\n\t\t\t\t\tuniforms.glossinessMap = { value: null };\n\n\t\t\t\t\tparams.vertexShader = shader.vertexShader;\n\t\t\t\t\tparams.fragmentShader = fragmentShader;\n\t\t\t\t\tparams.uniforms = uniforms;\n\t\t\t\t\tparams.defines = { 'STANDARD': '' };\n\n\t\t\t\t\tparams.color = new THREE.Color( 1.0, 1.0, 1.0 );\n\t\t\t\t\tparams.opacity = 1.0;\n\n\t\t\t\t\tvar pending = [];\n\n\t\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\t\tparams.color.fromArray( array );\n\t\t\t\t\t\tparams.opacity = array[ 3 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\t\tpending.push( parser.assignTexture( params, 'map', pbrSpecularGlossiness.diffuseTexture.index ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tparams.emissive = new THREE.Color( 0.0, 0.0, 0.0 );\n\t\t\t\t\tparams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\t\tparams.specular = new THREE.Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\t\tparams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\t\tvar specGlossIndex = pbrSpecularGlossiness.specularGlossinessTexture.index;\n\t\t\t\t\t\tpending.push( parser.assignTexture( params, 'glossinessMap', specGlossIndex ) );\n\t\t\t\t\t\tpending.push( parser.assignTexture( params, 'specularMap', specGlossIndex ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pending );\n\n\t\t\t\t},\n\n\t\t\t\tcreateMaterial: function ( params ) {\n\n\t\t\t\t\t// setup material properties based on MeshStandardMaterial for Specular-Glossiness\n\n\t\t\t\t\tvar material = new THREE.ShaderMaterial( {\n\t\t\t\t\t\tdefines: params.defines,\n\t\t\t\t\t\tvertexShader: params.vertexShader,\n\t\t\t\t\t\tfragmentShader: params.fragmentShader,\n\t\t\t\t\t\tuniforms: params.uniforms,\n\t\t\t\t\t\tfog: true,\n\t\t\t\t\t\tlights: true,\n\t\t\t\t\t\topacity: params.opacity,\n\t\t\t\t\t\ttransparent: params.transparent\n\t\t\t\t\t} );\n\n\t\t\t\t\tmaterial.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t\t\t\tmaterial.color = params.color;\n\n\t\t\t\t\tmaterial.map = params.map === undefined ? null : params.map;\n\n\t\t\t\t\tmaterial.lightMap = null;\n\t\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\t\tmaterial.aoMap = params.aoMap === undefined ? null : params.aoMap;\n\t\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\t\tmaterial.emissive = params.emissive;\n\t\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\t\tmaterial.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap;\n\n\t\t\t\t\tmaterial.bumpMap = params.bumpMap === undefined ? null : params.bumpMap;\n\t\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\t\tmaterial.normalMap = params.normalMap === undefined ? null : params.normalMap;\n\t\t\t\t\tmaterial.normalScale = new THREE.Vector2( 1, 1 );\n\n\t\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\t\tmaterial.specularMap = params.specularMap === undefined ? null : params.specularMap;\n\t\t\t\t\tmaterial.specular = params.specular;\n\n\t\t\t\t\tmaterial.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap;\n\t\t\t\t\tmaterial.glossiness = params.glossiness;\n\n\t\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\t\tmaterial.envMap = params.envMap === undefined ? null : params.envMap;\n\t\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\t\tmaterial.extensions.derivatives = true;\n\n\t\t\t\t\treturn material;\n\n\t\t\t\t},\n\n\t\t\t\t// Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer.\n\t\t\t\trefreshUniforms: function ( renderer, scene, camera, geometry, material, group ) {\n\n\t\t\t\t\tvar uniforms = material.uniforms;\n\t\t\t\t\tvar defines = material.defines;\n\n\t\t\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t\t\t\tuniforms.diffuse.value.copy( material.color );\n\t\t\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t\t\t\tuniforms.map.value = material.map;\n\t\t\t\t\tuniforms.specularMap.value = material.specularMap;\n\t\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\t\t\t// uv repeat and offset setting priorities\n\t\t\t\t\t// 1. color map\n\t\t\t\t\t// 2. specular map\n\t\t\t\t\t// 3. normal map\n\t\t\t\t\t// 4. bump map\n\t\t\t\t\t// 5. alpha map\n\t\t\t\t\t// 6. emissive map\n\n\t\t\t\t\tvar uvScaleMap;\n\n\t\t\t\t\tif ( material.map ) {\n\n\t\t\t\t\t\tuvScaleMap = material.map;\n\n\t\t\t\t\t} else if ( material.specularMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.specularMap;\n\n\t\t\t\t\t} else if ( material.displacementMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t\t\t\t} else if ( material.normalMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.normalMap;\n\n\t\t\t\t\t} else if ( material.bumpMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t\t\t\t} else if ( material.glossinessMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.glossinessMap;\n\n\t\t\t\t\t} else if ( material.alphaMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t\t\t\t} else if ( material.emissiveMap ) {\n\n\t\t\t\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t\t\t\t// backwards compatibility\n\t\t\t\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar offset = uvScaleMap.offset;\n\t\t\t\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\t\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tuniforms.envMap.value = material.envMap;\n\t\t\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\t\t\t\t\tuniforms.flipEnvMap.value = ( material.envMap && material.envMap.isCubeTexture ) ? -1 : 1;\n\n\t\t\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\t\t\tuniforms.specular.value.copy( material.specular );\n\t\t\t\t\tuniforms.glossiness.value = material.glossiness;\n\n\t\t\t\t\tuniforms.glossinessMap.value = material.glossinessMap;\n\n\t\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t\tif ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) {\n\n\t\t\t\t\t\tdefines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\tdefines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) {\n\n\t\t\t\t\t\tdelete defines.USE_GLOSSINESSMAP;\n\t\t\t\t\t\tdelete defines.USE_ROUGHNESSMAP;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t\t/*********************************/\n\t\t/********** INTERNALS ************/\n\t\t/*********************************/\n\n\t\t/* CONSTANTS */\n\n\t\tvar WEBGL_CONSTANTS = {\n\t\t\tFLOAT: 5126,\n\t\t\t//FLOAT_MAT2: 35674,\n\t\t\tFLOAT_MAT3: 35675,\n\t\t\tFLOAT_MAT4: 35676,\n\t\t\tFLOAT_VEC2: 35664,\n\t\t\tFLOAT_VEC3: 35665,\n\t\t\tFLOAT_VEC4: 35666,\n\t\t\tLINEAR: 9729,\n\t\t\tREPEAT: 10497,\n\t\t\tSAMPLER_2D: 35678,\n\t\t\tPOINTS: 0,\n\t\t\tLINES: 1,\n\t\t\tLINE_LOOP: 2,\n\t\t\tLINE_STRIP: 3,\n\t\t\tTRIANGLES: 4,\n\t\t\tTRIANGLE_STRIP: 5,\n\t\t\tTRIANGLE_FAN: 6,\n\t\t\tUNSIGNED_BYTE: 5121,\n\t\t\tUNSIGNED_SHORT: 5123\n\t\t};\n\n\t\tvar WEBGL_TYPE = {\n\t\t\t5126: Number,\n\t\t\t//35674: THREE.Matrix2,\n\t\t\t35675: THREE.Matrix3,\n\t\t\t35676: THREE.Matrix4,\n\t\t\t35664: THREE.Vector2,\n\t\t\t35665: THREE.Vector3,\n\t\t\t35666: THREE.Vector4,\n\t\t\t35678: THREE.Texture\n\t\t};\n\n\t\tvar WEBGL_COMPONENT_TYPES = {\n\t\t\t5120: Int8Array,\n\t\t\t5121: Uint8Array,\n\t\t\t5122: Int16Array,\n\t\t\t5123: Uint16Array,\n\t\t\t5125: Uint32Array,\n\t\t\t5126: Float32Array\n\t\t};\n\n\t\tvar WEBGL_FILTERS = {\n\t\t\t9728: THREE.NearestFilter,\n\t\t\t9729: THREE.LinearFilter,\n\t\t\t9984: THREE.NearestMipMapNearestFilter,\n\t\t\t9985: THREE.LinearMipMapNearestFilter,\n\t\t\t9986: THREE.NearestMipMapLinearFilter,\n\t\t\t9987: THREE.LinearMipMapLinearFilter\n\t\t};\n\n\t\tvar WEBGL_WRAPPINGS = {\n\t\t\t33071: THREE.ClampToEdgeWrapping,\n\t\t\t33648: THREE.MirroredRepeatWrapping,\n\t\t\t10497: THREE.RepeatWrapping\n\t\t};\n\n\t\tvar WEBGL_TEXTURE_FORMATS = {\n\t\t\t6406: THREE.AlphaFormat,\n\t\t\t6407: THREE.RGBFormat,\n\t\t\t6408: THREE.RGBAFormat,\n\t\t\t6409: THREE.LuminanceFormat,\n\t\t\t6410: THREE.LuminanceAlphaFormat\n\t\t};\n\n\t\tvar WEBGL_TEXTURE_DATATYPES = {\n\t\t\t5121: THREE.UnsignedByteType,\n\t\t\t32819: THREE.UnsignedShort4444Type,\n\t\t\t32820: THREE.UnsignedShort5551Type,\n\t\t\t33635: THREE.UnsignedShort565Type\n\t\t};\n\n\t\tvar WEBGL_SIDES = {\n\t\t\t1028: THREE.BackSide,  // Culling front\n\t\t\t1029: THREE.FrontSide  // Culling back\n\t\t\t//1032: THREE.NoSide   // Culling front and back, what to do?\n\t\t};\n\n\t\tvar WEBGL_DEPTH_FUNCS = {\n\t\t\t512: THREE.NeverDepth,\n\t\t\t513: THREE.LessDepth,\n\t\t\t514: THREE.EqualDepth,\n\t\t\t515: THREE.LessEqualDepth,\n\t\t\t516: THREE.GreaterEqualDepth,\n\t\t\t517: THREE.NotEqualDepth,\n\t\t\t518: THREE.GreaterEqualDepth,\n\t\t\t519: THREE.AlwaysDepth\n\t\t};\n\n\t\tvar WEBGL_BLEND_EQUATIONS = {\n\t\t\t32774: THREE.AddEquation,\n\t\t\t32778: THREE.SubtractEquation,\n\t\t\t32779: THREE.ReverseSubtractEquation\n\t\t};\n\n\t\tvar WEBGL_BLEND_FUNCS = {\n\t\t\t0: THREE.ZeroFactor,\n\t\t\t1: THREE.OneFactor,\n\t\t\t768: THREE.SrcColorFactor,\n\t\t\t769: THREE.OneMinusSrcColorFactor,\n\t\t\t770: THREE.SrcAlphaFactor,\n\t\t\t771: THREE.OneMinusSrcAlphaFactor,\n\t\t\t772: THREE.DstAlphaFactor,\n\t\t\t773: THREE.OneMinusDstAlphaFactor,\n\t\t\t774: THREE.DstColorFactor,\n\t\t\t775: THREE.OneMinusDstColorFactor,\n\t\t\t776: THREE.SrcAlphaSaturateFactor\n\t\t\t// The followings are not supported by Three.js yet\n\t\t\t//32769: CONSTANT_COLOR,\n\t\t\t//32770: ONE_MINUS_CONSTANT_COLOR,\n\t\t\t//32771: CONSTANT_ALPHA,\n\t\t\t//32772: ONE_MINUS_CONSTANT_COLOR\n\t\t};\n\n\t\tvar WEBGL_TYPE_SIZES = {\n\t\t\t'SCALAR': 1,\n\t\t\t'VEC2': 2,\n\t\t\t'VEC3': 3,\n\t\t\t'VEC4': 4,\n\t\t\t'MAT2': 4,\n\t\t\t'MAT3': 9,\n\t\t\t'MAT4': 16\n\t\t};\n\n\t\tvar PATH_PROPERTIES = {\n\t\t\tscale: 'scale',\n\t\t\ttranslation: 'position',\n\t\t\trotation: 'quaternion',\n\t\t\tweights: 'morphTargetInfluences'\n\t\t};\n\n\t\tvar INTERPOLATION = {\n\t\t\tCATMULLROMSPLINE: THREE.InterpolateSmooth,\n\t\t\tCUBICSPLINE: THREE.InterpolateSmooth,\n\t\t\tLINEAR: THREE.InterpolateLinear,\n\t\t\tSTEP: THREE.InterpolateDiscrete\n\t\t};\n\n\t\tvar STATES_ENABLES = {\n\t\t\t2884: 'CULL_FACE',\n\t\t\t2929: 'DEPTH_TEST',\n\t\t\t3042: 'BLEND',\n\t\t\t3089: 'SCISSOR_TEST',\n\t\t\t32823: 'POLYGON_OFFSET_FILL',\n\t\t\t32926: 'SAMPLE_ALPHA_TO_COVERAGE'\n\t\t};\n\n\t\tvar ALPHA_MODES = {\n\t\t\tOPAQUE: 'OPAQUE',\n\t\t\tMASK: 'MASK',\n\t\t\tBLEND: 'BLEND'\n\t\t};\n\n\t\t/* UTILITY FUNCTIONS */\n\n\t\tfunction _each( object, callback, thisObj ) {\n\n\t\t\tif ( !object ) {\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\n\t\t\tvar results;\n\t\t\tvar fns = [];\n\n\t\t\tif ( Object.prototype.toString.call( object ) === '[object Array]' ) {\n\n\t\t\t\tresults = [];\n\n\t\t\t\tvar length = object.length;\n\n\t\t\t\tfor ( var idx = 0; idx < length; idx ++ ) {\n\n\t\t\t\t\tvar value = callback.call( thisObj || this, object[ idx ], idx );\n\n\t\t\t\t\tif ( value ) {\n\n\t\t\t\t\t\tfns.push( value );\n\n\t\t\t\t\t\tif ( value instanceof Promise ) {\n\n\t\t\t\t\t\t\tvalue.then( function( key, value ) {\n\n\t\t\t\t\t\t\t\tresults[ key ] = value;\n\n\t\t\t\t\t\t\t}.bind( this, idx ));\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresults[ idx ] = 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} else {\n\n\t\t\t\tresults = {};\n\n\t\t\t\tfor ( var key in object ) {\n\n\t\t\t\t\tif ( object.hasOwnProperty( key ) ) {\n\n\t\t\t\t\t\tvar value = callback.call( thisObj || this, object[ key ], key );\n\n\t\t\t\t\t\tif ( value ) {\n\n\t\t\t\t\t\t\tfns.push( value );\n\n\t\t\t\t\t\t\tif ( value instanceof Promise ) {\n\n\t\t\t\t\t\t\t\tvalue.then( function( key, value ) {\n\n\t\t\t\t\t\t\t\t\tresults[ key ] = value;\n\n\t\t\t\t\t\t\t\t}.bind( this, key ));\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tresults[ key ] = value;\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}\n\n\t\t\treturn Promise.all( fns ).then( function() {\n\n\t\t\t\treturn results;\n\n\t\t\t});\n\n\t\t}\n\n\t\tfunction resolveURL( url, path ) {\n\n\t\t\t// Invalid URL\n\t\t\tif ( typeof url !== 'string' || url === '' )\n\t\t\t\treturn '';\n\n\t\t\t// Absolute URL http://,https://,//\n\t\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) {\n\n\t\t\t\treturn url;\n\n\t\t\t}\n\n\t\t\t// Data URI\n\t\t\tif ( /^data:.*,.*$/i.test( url ) ) {\n\n\t\t\t\treturn url;\n\n\t\t\t}\n\n\t\t\t// Blob URL\n\t\t\tif ( /^blob:.*$/i.test( url ) ) {\n\n\t\t\t\treturn url;\n\n\t\t\t}\n\n\t\t\t// Relative URL\n\t\t\treturn ( path || '' ) + url;\n\n\t\t}\n\n\t\tfunction convertUint8ArrayToString( array ) {\n\n\t\t\tif ( window.TextDecoder !== undefined ) {\n\n\t\t\t\treturn new TextDecoder().decode( array );\n\n\t\t\t}\n\n\t\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\t\tvar s = '';\n\n\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t\t}\n\n\t\t\treturn s;\n\n\t\t}\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t\t */\n\t\tfunction createDefaultMaterial() {\n\n\t\t\treturn new THREE.MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: THREE.FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t\t * @param {THREE.Mesh} mesh\n\t\t * @param {GLTF.Mesh} meshDef\n\t\t * @param {GLTF.Primitive} primitiveDef\n\t\t * @param {Object} dependencies\n\t\t */\n\t\tfunction addMorphTargets ( mesh, meshDef, primitiveDef, dependencies ) {\n\n\t\t\tvar geometry = mesh.geometry;\n\t\t\tvar material = mesh.material;\n\n\t\t\tvar targets = primitiveDef.targets;\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tmorphAttributes.position = [];\n\t\t\tmorphAttributes.normal = [];\n\n\t\t\tmaterial.morphTargets = true;\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\t\t\t\tvar attributeName = 'morphTarget' + i;\n\n\t\t\t\tvar positionAttribute, normalAttribute;\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\t// Three.js morph formula is\n\t\t\t\t\t//   position\n\t\t\t\t\t//     + weight0 * ( morphTarget0 - position )\n\t\t\t\t\t//     + weight1 * ( morphTarget1 - position )\n\t\t\t\t\t//     ...\n\t\t\t\t\t// while the glTF one is\n\t\t\t\t\t//   position\n\t\t\t\t\t//     + weight0 * morphTarget0\n\t\t\t\t\t//     + weight1 * morphTarget1\n\t\t\t\t\t//     ...\n\t\t\t\t\t// then adding position to morphTarget.\n\t\t\t\t\t// So morphTarget value will depend on mesh's position, then cloning attribute\n\t\t\t\t\t// for the case if attribute is shared among two or more meshes.\n\n\t\t\t\t\tpositionAttribute = dependencies.accessors[ target.POSITION ].clone();\n\t\t\t\t\tvar position = geometry.attributes.position;\n\n\t\t\t\t\tfor ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\tpositionAttribute.setXYZ(\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\tpositionAttribute.getX( j ) + position.getX( j ),\n\t\t\t\t\t\t\tpositionAttribute.getY( j ) + position.getY( j ),\n\t\t\t\t\t\t\tpositionAttribute.getZ( j ) + position.getZ( j )\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// Copying the original position not to affect the final position.\n\t\t\t\t\t// See the formula above.\n\t\t\t\t\tpositionAttribute = geometry.attributes.position.clone();\n\n\t\t\t\t}\n\n\t\t\t\tif ( target.NORMAL !== undefined ) {\n\n\t\t\t\t\tmaterial.morphNormals = true;\n\n\t\t\t\t\t// see target.POSITION's comment\n\n\t\t\t\t\tnormalAttribute = dependencies.accessors[ target.NORMAL ].clone();\n\t\t\t\t\tvar normal = geometry.attributes.normal;\n\n\t\t\t\t\tfor ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\tnormalAttribute.setXYZ(\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\tnormalAttribute.getX( j ) + normal.getX( j ),\n\t\t\t\t\t\t\tnormalAttribute.getY( j ) + normal.getY( j ),\n\t\t\t\t\t\t\tnormalAttribute.getZ( j ) + normal.getZ( j )\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\tnormalAttribute = geometry.attributes.normal.clone();\n\n\t\t\t\t}\n\n\t\t\t\tif ( target.TANGENT !== undefined ) {\n\n\t\t\t\t\t// TODO: implement\n\n\t\t\t\t}\n\n\t\t\t\tpositionAttribute.name = attributeName;\n\t\t\t\tnormalAttribute.name = attributeName;\n\n\t\t\t\tmorphAttributes.position.push( positionAttribute );\n\t\t\t\tmorphAttributes.normal.push( normalAttribute );\n\n\t\t\t}\n\n\t\t\tmesh.updateMorphTargets();\n\n\t\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* GLTF PARSER */\n\n\t\tfunction GLTFParser( json, extensions, options ) {\n\n\t\t\tthis.json = json || {};\n\t\t\tthis.extensions = extensions || {};\n\t\t\tthis.options = options || {};\n\n\t\t\t// loader object cache\n\t\t\tthis.cache = new GLTFRegistry();\n\n\t\t}\n\n\t\tGLTFParser.prototype._withDependencies = function ( dependencies ) {\n\n\t\t\tvar _dependencies = {};\n\n\t\t\tfor ( var i = 0; i < dependencies.length; i ++ ) {\n\n\t\t\t\tvar dependency = dependencies[ i ];\n\t\t\t\tvar fnName = 'load' + dependency.charAt( 0 ).toUpperCase() + dependency.slice( 1 );\n\n\t\t\t\tvar cached = this.cache.get( dependency );\n\n\t\t\t\tif ( cached !== undefined ) {\n\n\t\t\t\t\t_dependencies[ dependency ] = cached;\n\n\t\t\t\t} else if ( this[ fnName ] ) {\n\n\t\t\t\t\tvar fn = this[ fnName ]();\n\t\t\t\t\tthis.cache.add( dependency, fn );\n\n\t\t\t\t\t_dependencies[ dependency ] = fn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn _each( _dependencies, function ( dependency ) {\n\n\t\t\t\treturn dependency;\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\t\tvar json = this.json;\n\n\t\t\t// Clear the loader cache\n\t\t\tthis.cache.removeAll();\n\n\t\t\t// Fire the callback on complete\n\t\t\tthis._withDependencies( [\n\n\t\t\t\t'scenes',\n\t\t\t\t'cameras',\n\t\t\t\t'animations'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\tvar scenes = [];\n\n\t\t\t\tfor ( var name in dependencies.scenes ) {\n\n\t\t\t\t\tscenes.push( dependencies.scenes[ name ] );\n\n\t\t\t\t}\n\n\t\t\t\tvar scene = json.scene !== undefined ? dependencies.scenes[ json.scene ] : scenes[ 0 ];\n\n\t\t\t\tvar cameras = [];\n\n\t\t\t\tfor ( var name in dependencies.cameras ) {\n\n\t\t\t\t\tvar camera = dependencies.cameras[ name ];\n\t\t\t\t\tcameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t\tvar animations = [];\n\n\t\t\t\tfor ( var name in dependencies.animations ) {\n\n\t\t\t\t\tanimations.push( dependencies.animations[ name ] );\n\n\t\t\t\t}\n\n\t\t\t\tonLoad( scene, scenes, cameras, animations );\n\n\t\t\t} ).catch( onError );\n\n\t\t};\n\n\t\t/**\n\t\t * Requests the specified dependency asynchronously, with caching.\n\t\t * @param {string} type\n\t\t * @param {number} index\n\t\t * @return {Promise<Object>}\n\t\t */\n\t\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\t\tvar cacheKey = type + ':' + index;\n\t\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\t\tif ( !dependency ) {\n\n\t\t\t\tvar fnName = 'load' + type.charAt( 0 ).toUpperCase() + type.slice( 1 );\n\t\t\t\tdependency = this[ fnName ]( index );\n\t\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t\t}\n\n\t\t\treturn dependency;\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t\t * @param {number} bufferIndex\n\t\t * @return {Promise<ArrayBuffer>}\n\t\t */\n\t\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\n\t\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: %s buffer type is not supported.', bufferDef.type );\n\n\t\t\t}\n\n\t\t\t// If present, GLB container is required to be the first buffer.\n\t\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tvar loader = new THREE.FileLoader();\n\t\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve);\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t\t * @param {number} bufferViewIndex\n\t\t * @return {Promise<ArrayBuffer>}\n\t\t */\n\t\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.loadAccessors = function () {\n\n\t\t\tvar parser = this;\n\t\t\tvar json = this.json;\n\n\t\t\treturn _each( json.accessors, function ( accessor ) {\n\n\t\t\t\treturn parser.getDependency( 'bufferView', accessor.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessor.type ];\n\t\t\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessor.componentType ];\n\n\t\t\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\t\t\tvar byteStride = json.bufferViews[ accessor.bufferView ].byteStride;\n\t\t\t\t\tvar array;\n\n\t\t\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t\t\t// Use the full buffer if it's interleaved.\n\t\t\t\t\t\tarray = new TypedArray( bufferView );\n\n\t\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\t\tvar ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\t\treturn new THREE.InterleavedBufferAttribute( ib, itemSize, accessor.byteOffset / elementBytes );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tarray = new TypedArray( bufferView, accessor.byteOffset, accessor.count * itemSize );\n\n\t\t\t\t\t\treturn new THREE.BufferAttribute( array, itemSize );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t\t * @param {number} textureIndex\n\t\t * @return {Promise<THREE.Texture>}\n\t\t */\n\t\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar json = this.json;\n\t\t\tvar options = this.options;\n\n\t\t\tvar URL = window.URL || window.webkitURL;\n\n\t\t\tvar textureDef = json.textures[ textureIndex ];\n\t\t\tvar source = json.images[ textureDef.source ];\n\t\t\tvar sourceURI = source.uri;\n\t\t\tvar isObjectURL = false;\n\n\t\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView )\n\t\t\t\t\t.then( function ( bufferView ) {\n\n\t\t\t\t\t\tisObjectURL = true;\n\t\t\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\t\t\treturn sourceURI;\n\n\t\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\t\t// Load Texture resource.\n\n\t\t\t\tvar textureLoader = THREE.Loader.Handlers.get( sourceURI ) || new THREE.TextureLoader();\n\t\t\t\ttextureLoader.setCrossOrigin( options.crossOrigin );\n\n\t\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\t\ttextureLoader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject );\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( texture ) {\n\n\t\t\t\t// Clean up resources and configure Texture.\n\n\t\t\t\tif ( isObjectURL !== undefined ) {\n\n\t\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.flipY = false;\n\n\t\t\t\tif ( textureDef.name !== undefined ) texture.name = textureDef.name;\n\n\t\t\t\ttexture.format = textureDef.format !== undefined ? WEBGL_TEXTURE_FORMATS[ textureDef.format ] : THREE.RGBAFormat;\n\n\t\t\t\tif ( textureDef.internalFormat !== undefined && texture.format !== WEBGL_TEXTURE_FORMATS[ textureDef.internalFormat ] ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Three.js does not support texture internalFormat which is different from texture format. ' +\n\t\t\t\t\t\t\t\t\t\t\t\t'internalFormat will be forced to be the same value as format.' );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.type = textureDef.type !== undefined ? WEBGL_TEXTURE_DATATYPES[ textureDef.type ] : THREE.UnsignedByteType;\n\n\t\t\t\tvar samplers = json.samplers || {};\n\t\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter;\n\t\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter;\n\t\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping;\n\t\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping;\n\n\t\t\t\treturn texture;\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Asynchronously assigns a texture to the given material parameters.\n\t\t * @param {Object} materialParams\n\t\t * @param {string} textureName\n\t\t * @param {number} textureIndex\n\t\t * @return {Promise}\n\t\t */\n\t\tGLTFParser.prototype.assignTexture = function ( materialParams, textureName, textureIndex ) {\n\n\t\t\treturn this.getDependency( 'texture', textureIndex ).then( function ( texture ) {\n\n\t\t\t\tmaterialParams[ textureName ] = texture;\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t\t * @return {Promise<Array<THREE.Material>>}\n\t\t */\n\t\tGLTFParser.prototype.loadMaterials = function () {\n\n\t\t\tvar parser = this;\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\n\t\t\treturn _each( json.materials, function ( material ) {\n\n\t\t\t\tvar materialType;\n\t\t\t\tvar materialParams = {};\n\t\t\t\tvar materialExtensions = material.extensions || {};\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_COMMON ] ) {\n\n\t\t\t\t\tvar khcExtension = extensions[ EXTENSIONS.KHR_MATERIALS_COMMON ];\n\t\t\t\t\tmaterialType = khcExtension.getMaterialType( material );\n\t\t\t\t\tpending.push( khcExtension.extendParams( materialParams, material, parser ) );\n\n\t\t\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\t\t\tmaterialType = sgExtension.getMaterialType( material );\n\t\t\t\t\tpending.push( sgExtension.extendParams( materialParams, material, parser ) );\n\n\t\t\t\t} else if ( material.pbrMetallicRoughness !== undefined ) {\n\n\t\t\t\t\t// Specification:\n\t\t\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\t\t\tmaterialType = THREE.MeshStandardMaterial;\n\n\t\t\t\t\tvar metallicRoughness = material.pbrMetallicRoughness;\n\n\t\t\t\t\tmaterialParams.color = new THREE.Color( 1.0, 1.0, 1.0 );\n\t\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture.index ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\t\t\tvar textureIndex = metallicRoughness.metallicRoughnessTexture.index;\n\t\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', textureIndex ) );\n\t\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', textureIndex ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterialType = THREE.MeshPhongMaterial;\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.doubleSided === true ) {\n\n\t\t\t\t\tmaterialParams.side = THREE.DoubleSide;\n\n\t\t\t\t}\n\n\t\t\t\tvar alphaMode = material.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\t\t\tif ( alphaMode !== ALPHA_MODES.OPAQUE ) {\n\n\t\t\t\t\tmaterialParams.transparent = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterialParams.transparent = false;\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.normalTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', material.normalTexture.index ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.occlusionTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', material.occlusionTexture.index ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.emissiveFactor !== undefined ) {\n\n\t\t\t\t\tif ( materialType === THREE.MeshBasicMaterial ) {\n\n\t\t\t\t\t\tmaterialParams.color = new THREE.Color().fromArray( material.emissiveFactor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmaterialParams.emissive = new THREE.Color().fromArray( material.emissiveFactor );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.emissiveTexture !== undefined ) {\n\n\t\t\t\t\tif ( materialType === THREE.MeshBasicMaterial ) {\n\n\t\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', material.emissiveTexture.index ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', material.emissiveTexture.index ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\t\tvar _material;\n\n\t\t\t\t\tif ( materialType === THREE.ShaderMaterial ) {\n\n\t\t\t\t\t\t_material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_material = new materialType( materialParams );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( material.name !== undefined ) _material.name = material.name;\n\n\t\t\t\t\t// Normal map textures use OpenGL conventions:\n\t\t\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture\n\t\t\t\t\t_material.normalScale.x = -1;\n\n\t\t\t\t\t_material.userData = material.extras;\n\n\t\t\t\t\treturn _material;\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\t\treturn this._withDependencies( [\n\n\t\t\t\t'accessors',\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\treturn _each( primitives, function ( primitive ) {\n\n\t\t\t\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\t\t\t\tvar attributes = primitive.attributes;\n\n\t\t\t\t\tfor ( var attributeId in attributes ) {\n\n\t\t\t\t\t\tvar attributeEntry = attributes[ attributeId ];\n\n\t\t\t\t\t\tif ( attributeEntry === undefined ) return;\n\n\t\t\t\t\t\tvar bufferAttribute = dependencies.accessors[ attributeEntry ];\n\n\t\t\t\t\t\tswitch ( attributeId ) {\n\n\t\t\t\t\t\t\tcase 'POSITION':\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'position', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'NORMAL':\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'normal', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'TEXCOORD_0':\n\t\t\t\t\t\t\tcase 'TEXCOORD0':\n\t\t\t\t\t\t\tcase 'TEXCOORD':\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'uv', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'TEXCOORD_1':\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'uv2', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'COLOR_0':\n\t\t\t\t\t\t\tcase 'COLOR0':\n\t\t\t\t\t\t\tcase 'COLOR':\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'color', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'WEIGHTS_0':\n\t\t\t\t\t\t\tcase 'WEIGHT': // WEIGHT semantic deprecated.\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'skinWeight', bufferAttribute );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'JOINTS_0':\n\t\t\t\t\t\t\tcase 'JOINT': // JOINT semantic deprecated.\n\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'skinIndex', bufferAttribute );\n\t\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\tif ( primitive.indices !== undefined ) {\n\n\t\t\t\t\t\tgeometry.setIndex( dependencies.accessors[ primitive.indices ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn geometry;\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t\t */\n\t\tGLTFParser.prototype.loadMeshes = function () {\n\n\t\t\tvar scope = this;\n\t\t\tvar json = this.json;\n\n\t\t\treturn this._withDependencies( [\n\n\t\t\t\t'accessors',\n\t\t\t\t'materials'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\treturn _each( json.meshes, function ( meshDef ) {\n\n\t\t\t\t\tvar group = new THREE.Group();\n\n\t\t\t\t\tif ( meshDef.name !== undefined ) group.name = meshDef.name;\n\t\t\t\t\tif ( meshDef.extras ) group.userData = meshDef.extras;\n\n\t\t\t\t\tvar primitives = meshDef.primitives || [];\n\n\t\t\t\t\treturn scope.loadGeometries( primitives ).then( function ( geometries ) {\n\n\t\t\t\t\t\tfor ( var name in primitives ) {\n\n\t\t\t\t\t\t\tvar primitive = primitives[ name ];\n\t\t\t\t\t\t\tvar geometry = geometries[ name ];\n\n\t\t\t\t\t\t\tvar material = primitive.material === undefined\n\t\t\t\t\t\t\t\t? createDefaultMaterial()\n\t\t\t\t\t\t\t\t: dependencies.materials[ primitive.material ];\n\n\t\t\t\t\t\t\tif ( material.aoMap\n\t\t\t\t\t\t\t\t\t&& geometry.attributes.uv2 === undefined\n\t\t\t\t\t\t\t\t\t&& geometry.attributes.uv !== undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' );\n\t\t\t\t\t\t\t\tgeometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( geometry.attributes.color !== undefined ) {\n\n\t\t\t\t\t\t\t\tmaterial.vertexColors = THREE.VertexColors;\n\t\t\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( geometry.attributes.normal === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( material.flatShading !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmaterial.flatShading = true;\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t// TODO: Remove this backwards-compatibility fix after r87 release.\n\t\t\t\t\t\t\t\t\tmaterial.shading = THREE.FlatShading;\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\tvar mesh;\n\n\t\t\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === undefined ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.Mesh( geometry, material );\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.Mesh( geometry, material );\n\t\t\t\t\t\t\t\tmesh.drawMode = THREE.TriangleStripDrawMode;\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.Mesh( geometry, material );\n\t\t\t\t\t\t\t\tmesh.drawMode = THREE.TriangleFanDrawMode;\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.LineSegments( geometry, material );\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.Line( geometry, material );\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.LineLoop( geometry, material );\n\n\t\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\t\t\t\tmesh = new THREE.Points( geometry, material );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ', primitive.mode );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmesh.name = group.name + '_' + name;\n\n\t\t\t\t\t\t\tif ( primitive.targets !== undefined ) {\n\n\t\t\t\t\t\t\t\taddMorphTargets( mesh, meshDef, primitive, dependencies );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( primitive.extras ) mesh.userData = primitive.extras;\n\n\t\t\t\t\t\t\tgroup.add( mesh );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn group;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t\t */\n\t\tGLTFParser.prototype.loadCameras = function () {\n\n\t\t\tvar json = this.json;\n\n\t\t\treturn _each( json.cameras, function ( camera ) {\n\n\t\t\t\tvar _camera;\n\n\t\t\t\tvar params = camera[ camera.type ];\n\n\t\t\t\tif ( !params ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( camera.type === 'perspective' ) {\n\n\t\t\t\t\tvar aspectRatio = params.aspectRatio || 1;\n\t\t\t\t\tvar xfov = params.yfov * aspectRatio;\n\n\t\t\t\t\t_camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspectRatio, params.znear || 1, params.zfar || 2e6 );\n\n\t\t\t\t} else if ( camera.type === 'orthographic' ) {\n\n\t\t\t\t\t_camera = new THREE.OrthographicCamera( params.xmag / -2, params.xmag / 2, params.ymag / 2, params.ymag / -2, params.znear, params.zfar );\n\n\t\t\t\t}\n\n\t\t\t\tif ( camera.name !== undefined ) _camera.name = camera.name;\n\t\t\t\tif ( camera.extras ) _camera.userData = camera.extras;\n\n\t\t\t\treturn _camera;\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.loadSkins = function () {\n\n\t\t\tvar json = this.json;\n\n\t\t\treturn this._withDependencies( [\n\n\t\t\t\t'accessors'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\treturn _each( json.skins, function ( skin ) {\n\n\t\t\t\t\tvar _skin = {\n\t\t\t\t\t\tjoints: skin.joints,\n\t\t\t\t\t\tinverseBindMatrices: dependencies.accessors[ skin.inverseBindMatrices ]\n\t\t\t\t\t};\n\n\t\t\t\t\treturn _skin;\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.loadAnimations = function () {\n\n\t\t\tvar json = this.json;\n\n\t\t\treturn this._withDependencies( [\n\n\t\t\t\t'accessors',\n\t\t\t\t'nodes'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\treturn _each( json.animations, function ( animation, animationId ) {\n\n\t\t\t\t\tvar tracks = [];\n\n\t\t\t\t\tfor ( var channelId in animation.channels ) {\n\n\t\t\t\t\t\tvar channel = animation.channels[ channelId ];\n\t\t\t\t\t\tvar sampler = animation.samplers[ channel.sampler ];\n\n\t\t\t\t\t\tif ( sampler ) {\n\n\t\t\t\t\t\t\tvar target = channel.target;\n\t\t\t\t\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\t\t\t\t\tvar input = animation.parameters !== undefined ? animation.parameters[ sampler.input ] : sampler.input;\n\t\t\t\t\t\t\tvar output = animation.parameters !== undefined ? animation.parameters[ sampler.output ] : sampler.output;\n\n\t\t\t\t\t\t\tvar inputAccessor = dependencies.accessors[ input ];\n\t\t\t\t\t\t\tvar outputAccessor = dependencies.accessors[ output ];\n\n\t\t\t\t\t\t\tvar node = dependencies.nodes[ name ];\n\n\t\t\t\t\t\t\tif ( node ) {\n\n\t\t\t\t\t\t\t\tnode.updateMatrix();\n\t\t\t\t\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\t\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\t\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.NumberKeyframeTrack;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.QuaternionKeyframeTrack;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.VectorKeyframeTrack;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\t\t\t\t\tif ( sampler.interpolation === 'CATMULLROMSPLINE' ) {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: CATMULLROMSPLINE interpolation is not supported. Using CUBICSPLINE instead.' );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear;\n\n\t\t\t\t\t\t\t\tvar targetNames = [];\n\n\t\t\t\t\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t\t\t\t\t// node should be THREE.Group here but\n\t\t\t\t\t\t\t\t\t// PATH_PROPERTIES.weights(morphTargetInfluences) should be\n\t\t\t\t\t\t\t\t\t// the property of a mesh object under node.\n\t\t\t\t\t\t\t\t\t// So finding targets here.\n\n\t\t\t\t\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( object.isMesh === true && object.material.morphTargets === true ) {\n\n\t\t\t\t\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// KeyframeTrack.optimize() will modify given 'times' and 'values'\n\t\t\t\t\t\t\t\t// buffers before creating a truncated copy to keep. Because buffers may\n\t\t\t\t\t\t\t\t// be reused by other tracks, make copies here.\n\t\t\t\t\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\ttracks.push( new TypedKeyframeTrack(\n\t\t\t\t\t\t\t\t\t\ttargetNames[ i ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\t\t\t\t\tTHREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ),\n\t\t\t\t\t\t\t\t\t\tTHREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ),\n\t\t\t\t\t\t\t\t\t\tinterpolation\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\tvar name = animation.name !== undefined ? animation.name : 'animation_' + animationId;\n\n\t\t\t\t\treturn new THREE.AnimationClip( name, undefined, tracks );\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\tGLTFParser.prototype.loadNodes = function () {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar scope = this;\n\n\t\t\tvar nodes = json.nodes || [];\n\t\t\tvar skins = json.skins || [];\n\n\t\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\t\tskins.forEach( function ( skin ) {\n\n\t\t\t\tskin.joints.forEach( function ( id ) {\n\n\t\t\t\t\tnodes[ id ].isBone = true;\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t\treturn _each( json.nodes, function ( node ) {\n\n\t\t\t\tvar matrix = new THREE.Matrix4();\n\n\t\t\t\tvar _node = node.isBone === true ? new THREE.Bone() : new THREE.Object3D();\n\n\t\t\t\tif ( node.name !== undefined ) {\n\n\t\t\t\t\t_node.name = THREE.PropertyBinding.sanitizeNodeName( node.name );\n\n\t\t\t\t}\n\n\t\t\t\tif ( node.extras ) _node.userData = node.extras;\n\n\t\t\t\tif ( node.matrix !== undefined ) {\n\n\t\t\t\t\tmatrix.fromArray( node.matrix );\n\t\t\t\t\t_node.applyMatrix( matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( node.translation !== undefined ) {\n\n\t\t\t\t\t\t_node.position.fromArray( node.translation );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( node.rotation !== undefined ) {\n\n\t\t\t\t\t\t_node.quaternion.fromArray( node.rotation );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( node.scale !== undefined ) {\n\n\t\t\t\t\t\t_node.scale.fromArray( node.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn _node;\n\n\t\t\t} ).then( function ( __nodes ) {\n\n\t\t\t\treturn scope._withDependencies( [\n\n\t\t\t\t\t'meshes',\n\t\t\t\t\t'skins',\n\t\t\t\t\t'cameras'\n\n\t\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\t\treturn _each( __nodes, function ( _node, nodeId ) {\n\n\t\t\t\t\t\tvar node = json.nodes[ nodeId ];\n\n\t\t\t\t\t\tvar meshes;\n\n\t\t\t\t\t\tif ( node.mesh !== undefined) {\n\n\t\t\t\t\t\t\tmeshes = [ node.mesh ];\n\n\t\t\t\t\t\t} else if ( node.meshes !== undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Legacy glTF file detected. Nodes may have no more than one mesh.' );\n\n\t\t\t\t\t\t\tmeshes = node.meshes;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( meshes !== undefined ) {\n\n\t\t\t\t\t\t\tfor ( var meshId in meshes ) {\n\n\t\t\t\t\t\t\t\tvar mesh = meshes[ meshId ];\n\t\t\t\t\t\t\t\tvar group = dependencies.meshes[ mesh ];\n\n\t\t\t\t\t\t\t\tif ( group === undefined ) {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Could not find node \"' + mesh + '\".' );\n\t\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// do not clone children as they will be replaced anyway\n\t\t\t\t\t\t\t\tvar clonedgroup = group.clone( false );\n\n\t\t\t\t\t\t\t\tfor ( var childrenId in group.children ) {\n\n\t\t\t\t\t\t\t\t\tvar child = group.children[ childrenId ];\n\t\t\t\t\t\t\t\t\tvar originalChild = child;\n\n\t\t\t\t\t\t\t\t\t// clone Mesh to add to _node\n\n\t\t\t\t\t\t\t\t\tvar originalMaterial = child.material;\n\t\t\t\t\t\t\t\t\tvar originalGeometry = child.geometry;\n\t\t\t\t\t\t\t\t\tvar originalInfluences = child.morphTargetInfluences;\n\t\t\t\t\t\t\t\t\tvar originalUserData = child.userData;\n\t\t\t\t\t\t\t\t\tvar originalName = child.name;\n\n\t\t\t\t\t\t\t\t\tvar material = originalMaterial;\n\n\t\t\t\t\t\t\t\t\tswitch ( child.type ) {\n\n\t\t\t\t\t\t\t\t\t\tcase 'LineSegments':\n\t\t\t\t\t\t\t\t\t\t\tchild = new THREE.LineSegments( originalGeometry, material );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'LineLoop':\n\t\t\t\t\t\t\t\t\t\t\tchild = new THREE.LineLoop( originalGeometry, material );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'Line':\n\t\t\t\t\t\t\t\t\t\t\tchild = new THREE.Line( originalGeometry, material );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tcase 'Points':\n\t\t\t\t\t\t\t\t\t\t\tchild = new THREE.Points( originalGeometry, material );\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tchild = new THREE.Mesh( originalGeometry, material );\n\t\t\t\t\t\t\t\t\t\t\tchild.drawMode = originalChild.drawMode;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tchild.castShadow = true;\n\t\t\t\t\t\t\t\t\tchild.morphTargetInfluences = originalInfluences;\n\t\t\t\t\t\t\t\t\tchild.userData = originalUserData;\n\t\t\t\t\t\t\t\t\tchild.name = originalName;\n\n\t\t\t\t\t\t\t\t\tvar skinEntry;\n\n\t\t\t\t\t\t\t\t\tif ( node.skin !== undefined ) {\n\n\t\t\t\t\t\t\t\t\t\tskinEntry = dependencies.skins[ node.skin ];\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Replace Mesh with SkinnedMesh in library\n\t\t\t\t\t\t\t\t\tif ( skinEntry ) {\n\n\t\t\t\t\t\t\t\t\t\tvar geometry = originalGeometry;\n\t\t\t\t\t\t\t\t\t\tmaterial = originalMaterial;\n\t\t\t\t\t\t\t\t\t\tmaterial.skinning = true;\n\n\t\t\t\t\t\t\t\t\t\tchild = new THREE.SkinnedMesh( geometry, material );\n\t\t\t\t\t\t\t\t\t\tchild.castShadow = true;\n\t\t\t\t\t\t\t\t\t\tchild.userData = originalUserData;\n\t\t\t\t\t\t\t\t\t\tchild.name = originalName;\n\n\t\t\t\t\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\t\t\t\t\tfor ( var i = 0, l = skinEntry.joints.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tvar jointId = skinEntry.joints[ i ];\n\t\t\t\t\t\t\t\t\t\t\tvar jointNode = __nodes[ jointId ];\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\t\t\t\t\tvar m = skinEntry.inverseBindMatrices.array;\n\t\t\t\t\t\t\t\t\t\t\t\tvar mat = new THREE.Matrix4().fromArray( m, i * 16 );\n\t\t\t\t\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', jointId );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tchild.bind( new THREE.Skeleton( bones, boneInverses ), child.matrixWorld );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tclonedgroup.add( child );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_node.add( clonedgroup );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( node.camera !== undefined ) {\n\n\t\t\t\t\t\t\tvar camera = dependencies.cameras[ node.camera ];\n\n\t\t\t\t\t\t\t_node.add( camera );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( node.extensions\n\t\t\t\t\t\t\t\t && node.extensions[ EXTENSIONS.KHR_LIGHTS ]\n\t\t\t\t\t\t\t\t && node.extensions[ EXTENSIONS.KHR_LIGHTS ].light !== undefined ) {\n\n\t\t\t\t\t\t\tvar lights = extensions[ EXTENSIONS.KHR_LIGHTS ].lights;\n\t\t\t\t\t\t\t_node.add( lights[ node.extensions[ EXTENSIONS.KHR_LIGHTS ].light ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn _node;\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\tGLTFParser.prototype.loadScenes = function () {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\n\t\t\t// scene node hierachy builder\n\n\t\t\tfunction buildNodeHierachy( nodeId, parentObject, allNodes ) {\n\n\t\t\t\tvar _node = allNodes[ nodeId ];\n\t\t\t\tparentObject.add( _node );\n\n\t\t\t\tvar node = json.nodes[ nodeId ];\n\n\t\t\t\tif ( node.children ) {\n\n\t\t\t\t\tvar children = node.children;\n\n\t\t\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tbuildNodeHierachy( child, _node, allNodes );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this._withDependencies( [\n\n\t\t\t\t'nodes'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\treturn _each( json.scenes, function ( scene ) {\n\n\t\t\t\t\tvar _scene = new THREE.Scene();\n\t\t\t\t\tif ( scene.name !== undefined ) _scene.name = scene.name;\n\n\t\t\t\t\tif ( scene.extras ) _scene.userData = scene.extras;\n\n\t\t\t\t\tvar nodes = scene.nodes || [];\n\n\t\t\t\t\tfor ( var i = 0, l = nodes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar nodeId = nodes[ i ];\n\t\t\t\t\t\tbuildNodeHierachy( nodeId, _scene, dependencies.nodes );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_scene.traverse( function ( child ) {\n\n\t\t\t\t\t\t// for Specular-Glossiness.\n\t\t\t\t\t\tif ( child.material && child.material.isGLTFSpecularGlossinessMaterial ) {\n\n\t\t\t\t\t\t\tchild.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Ambient lighting, if present, is always attached to the scene root.\n\t\t\t\t\tif ( scene.extensions\n\t\t\t\t\t\t\t\t && scene.extensions[ EXTENSIONS.KHR_LIGHTS ]\n\t\t\t\t\t\t\t\t && scene.extensions[ EXTENSIONS.KHR_LIGHTS ].light !== undefined ) {\n\n\t\t\t\t\t\tvar lights = extensions[ EXTENSIONS.KHR_LIGHTS ].lights;\n\t\t\t\t\t\t_scene.add( lights[ scene.extensions[ EXTENSIONS.KHR_LIGHTS ].light ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn _scene;\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t};\n\n\t\treturn GLTFLoader;\n\n\t} )();\n\n};\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Defines RCTScene \"derived\" from RTCBaseView.\n * Assigns 'this.view' to OVRUI.UIView(guiSys),\n * @class RCTScene\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\n\nexport default class RCTScene extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n  }\n\n  /**\n   * override the handling of the transform to become a no op\n   */\n  presentLayout() {}\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {});\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Defines RCTSound \"derived\" from RTCBaseView.\n * Assigns 'this.view' to OVRUI.UIView(guiSys),\n * @class RCTSound\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport extractURL from '../Utils/extractURL';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport getSupportedFormats from '../Audio/getSupportedFormats';\n\nexport type PlayStatus = 'closed' | 'loading' | 'error' | 'ended' | 'paused' | 'playing' | 'ready';\n\nconst COMMAND_SEEK_TO = 1;\nconst COMMAND_PLAY = 2;\nconst COMMAND_PAUSE = 3;\n\nexport default class RCTSound extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n    this._rnctx = rnctx;\n    this._audioModule = rnctx.AudioModule;\n    this._counter = 0;\n    this._handle = null;\n    this._playStatus = 'closed';\n    this._onCanPlay = this._onCanPlay.bind(this);\n    this._onPlaying = this._onPlaying.bind(this);\n    this._onPause = this._onPause.bind(this);\n    this._onEnded = this._onEnded.bind(this);\n    this._onError = this._onError.bind(this);\n    this._onDurationChange = this._onDurationChange.bind(this);\n    this._onTimeUpdate = this._onTimeUpdate.bind(this);\n\n    Object.defineProperty(this.props, 'autoPlay', {\n      set: value => {\n        this.props._autoPlay = value;\n      },\n    });\n\n    Object.defineProperty(this.props, 'volume', {\n      set: value => {\n        if (value < 0) {\n          // Use 0 as our minimum volume value, although a WebAudio GainNode\n          // gain value can be set to negative for phase inversion.\n          if (__DEV__) {\n            console.warn('<Sound> volume cannot be negative:', value);\n          }\n          return;\n        }\n        this.props._volume = value;\n        if (this._handle) {\n          this._audioModule.setVolume(this._handle, this.props._volume);\n        }\n      },\n    });\n\n    Object.defineProperty(this.props, 'muted', {\n      set: value => {\n        this.props._muted = value;\n        if (this._handle) {\n          this._audioModule.setMuted(this._handle, this.props._muted);\n        }\n      },\n    });\n\n    Object.defineProperty(this.props, 'loop', {\n      set: value => {\n        this.props._loop = value;\n      },\n    });\n\n    Object.defineProperty(this.props, 'playControl', {\n      set: value => {\n        this.props._playControl = value;\n\n        if (!this._handle) {\n          return;\n        }\n\n        if (this.props._playControl === 'stop') {\n          this._audioModule.stop(this._handle);\n        } else if (this.props._playControl === 'pause') {\n          this._audioModule.pause(this._handle);\n        } else if (this.props._playControl === 'play') {\n          this._audioModule.play(this._handle);\n        }\n      },\n    });\n\n    Object.defineProperty(this.props, 'source', {\n      set: value => {\n        let url = null;\n        if (value && typeof value === 'object' && !('uri' in value)) {\n          let format = null;\n          for (const key in value) {\n            if (getSupportedFormats().indexOf(key) > -1) {\n              format = key;\n              url = extractURL(value[key]);\n              break;\n            }\n          }\n\n          if (!format) {\n            if (__DEV__) {\n              console.warn('No supported audio format found in <Sound> source');\n            }\n            return;\n          }\n          if (!url) {\n            if (__DEV__) {\n              console.warn('<Sound> source format values must be in the form {uri: \"...\"}');\n            }\n            return;\n          }\n        } else if (value) {\n          url = extractURL(value);\n          if (!url) {\n            if (__DEV__) {\n              console.warn('<Sound> source must be in format {uri: \"...\"}');\n            }\n            return;\n          }\n        }\n        this.props._source = value;\n\n        // User might have set source to null to remove the audio.\n        if (!this.props._source) {\n          const prevHandle = this._handle;\n          this._handle = null;\n          if (prevHandle) {\n            this._audioModule.unload(prevHandle);\n          }\n          this._updatePlayStatus('closed');\n          return;\n        }\n\n        // Generate unique handle and register it with AudioModule.\n        const prevHandle = this._handle;\n        this._counter += 1;\n        this._handle = [url, this.view.uuid, this._counter].join('-');\n        this._audioModule.addHandle(this._handle);\n        this._audioModule.setUrl(this._handle, url);\n\n        // Apply current settings\n        if (this.props._volume) {\n          this._audioModule.setVolume(this._handle, this.props._volume);\n        }\n        if (this.props._muted) {\n          this._audioModule.setMuted(this._handle, this.props._muted);\n        }\n\n        // Unload previous audio.\n        if (prevHandle) {\n          this._audioModule.unload(prevHandle);\n        }\n\n        // Register callbacks and load audio.\n        this._audioModule._addMediaEventListener(this._handle, 'canplay', this._onCanPlay);\n        this._audioModule._addMediaEventListener(this._handle, 'ended', this._onEnded);\n        this._audioModule._addMediaEventListener(this._handle, 'playing', this._onPlaying);\n        this._audioModule._addMediaEventListener(this._handle, 'pause', this._onPause);\n        this._audioModule._addMediaEventListener(this._handle, 'error', this._onError);\n        this._audioModule._addMediaEventListener(\n          this._handle,\n          'durationchange',\n          this._onDurationChange\n        );\n        this._audioModule._addMediaEventListener(this._handle, 'timeupdate', this._onTimeUpdate);\n        this._audioModule.load(this._handle);\n        this._updatePlayStatus('loading');\n      },\n    });\n  }\n  /**\n   * Customised present layout to update position of audio source.\n   */\n  presentLayout() {\n    super.presentLayout(this);\n\n    if (this._handle) {\n      const position = this.view.getWorldPosition().toArray();\n      this._audioModule.setPosition(this._handle, position);\n    }\n  }\n\n  dispose() {\n    if (this._handle) {\n      this._audioModule.unload(this._handle);\n    }\n    super.dispose();\n  }\n\n  receiveCommand(commandId, commandArgs) {\n    super.receiveCommand(commandId, commandArgs);\n    switch (commandId) {\n      case COMMAND_SEEK_TO:\n        if (this._handle) {\n          const position = commandArgs ? commandArgs[0] : 0;\n          this._audioModule.seekTo(this._handle, position);\n        }\n        break;\n      case COMMAND_PLAY:\n        if (this._handle) {\n          this._audioModule.play(this._handle);\n        }\n        break;\n      case COMMAND_PAUSE:\n        if (this._handle) {\n          this._audioModule.pause(this._handle);\n        }\n        break;\n    }\n  }\n\n  _onCanPlay(handle) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('ready');\n    // Play audio if in auto-play mode, or status is set to 'play'\n    const status = this.props._playControl;\n    if ((this.props._autoPlay && status !== 'stop') || status === 'play') {\n      this._audioModule.play(handle);\n    }\n  }\n\n  _onEnded(handle) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('ended');\n    // Play sound if in loop mode and status not set to 'stop'\n    if (this.props._loop && this.props._playControl !== 'stop') {\n      this._audioModule.play(handle);\n    }\n\n    // call onEnded in React\n    this._emitEvent('topEnded', []);\n  }\n\n  _onPlaying(handle) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('playing');\n  }\n\n  _onPause(handle) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('paused');\n  }\n\n  _onError(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('error');\n  }\n\n  _onDurationChange(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    const duration = event.target && event.target.duration;\n    if (duration) {\n      this._emitEvent('topDurationChange', {duration: duration});\n    }\n  }\n\n  _onTimeUpdate(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    const currentTime = event.target && event.target.currentTime;\n    if (currentTime) {\n      this._emitEvent('topTimeUpdate', {currentTime: currentTime});\n    }\n  }\n\n  _emitEvent(eventType, args) {\n    this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [this.getTag(), eventType, args]);\n  }\n\n  _updatePlayStatus(status) {\n    if (this._playStatus !== status) {\n      this._playStatus = status;\n      this._emitEvent('topPlayStatusChange', {playStatus: this._playStatus});\n    }\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        autoPlay: 'boolean',\n        volume: 'number',\n        loop: 'boolean',\n        muted: 'boolean',\n        playControl: 'string',\n        source: 'object',\n      },\n      Commands: {\n        seekTo: COMMAND_SEEK_TO,\n        play: COMMAND_PLAY,\n        pause: COMMAND_PAUSE,\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTText applies text, textColor, etc. attributes to view inside of updateView.\n * Includes properties such as fontSize, hAlign, etc.\n * @class RCTText\n * @extends RCTBaseView\n * @flow\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nimport type {GuiSys} from 'ovrui';\n\n// Mappings from react definitions to OVRUI\nconst ALIGN_MAP = {\n  auto: 'left',\n  left: 'left',\n  right: 'right',\n  center: 'center_line',\n  justify: 'left',\n};\n\nconst ALIGN_VERTICAL_MAP = {\n  auto: 'top',\n  top: 'top',\n  bottom: 'bottom',\n  center: 'center',\n};\n\nconst NAMED_FONT_WEIGHT = {\n  normal: 200,\n  bold: 600,\n};\n\nfunction snapUp(value: number, step: number) {\n  const inv = 1.0 / step;\n  return Math.ceil(value * inv) / inv;\n}\n\nexport default class RCTText extends RCTBaseView {\n  guiSys: GuiSys;\n  isTextNode: boolean;\n  _visualTextDirty: boolean;\n  _textDirty: boolean;\n  _isOnLayer: boolean;\n  _fontWeight: number;\n  _fontBorderSize: number;\n  _fontSize: number;\n  _text: string;\n  previousWidth: number;\n  previousHeight: number;\n  textChildren: Array<any>;\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys: GuiSys) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.clippingEnabled = true;\n    this.guiSys = guiSys;\n    this.isTextNode = true;\n    this._textDirty = true;\n    this._visualTextDirty = true;\n    this._fontBorderSize = 0;\n    this._fontWeight = 0;\n    this._isOnLayer = false;\n    this.textChildren = [];\n\n    // custom measure function for the flexbox layout\n    this.YGNode.setMeasureFunc((width, widthMeasureMode, height, heightMeasureMode) =>\n      this.measure(width, widthMeasureMode, height, heightMeasureMode)\n    );\n\n    // make use of getters and setters to directly apply the values to view when they change\n    Object.defineProperty(\n      this.props,\n      'numberOfLines',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          this.props._numberOfLines = value;\n          this._textDirty = true;\n          this.markTextDirty();\n          this.makeDirty();\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'isOnLayer',\n      ({\n        set: value => {\n          if (value === null) {\n            value = false;\n          }\n          this._isOnLayer = value;\n          this.view.clippingEnabled = value;\n          this._textDirty = true;\n          this.markTextDirty();\n          this.makeDirty();\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.props,\n      'hitSlop',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          if (typeof value === 'number') {\n            this.view.setHitSlop(value, value, value, value);\n          } else {\n            this.view.setHitSlop(value.left, value.top, value.right, value.bottom);\n          }\n        },\n      }: Object)\n    );\n    // setup the setters from React parameters to internal state\n    Object.defineProperty(\n      this.style,\n      'color',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0xffffffff;\n          }\n          this.style._textColor = value;\n          this.markTextDirty();\n          this.makeDirty();\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.style,\n      'fontSize',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0.1;\n          }\n          this.view.setTextSize(value);\n          this._fontSize = value;\n          this._textDirty = true;\n          this.markTextDirty();\n          this.makeDirty();\n        },\n        get: () => {\n          return this._fontSize;\n        },\n      }: Object)\n    );\n    // Map the fontWeight attribute into the SDF font parameters\n    Object.defineProperty(\n      this.style,\n      'fontWeight',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'normal';\n          }\n          // lookup font weight if is named (eg normal or bold)\n          const namedWeight = NAMED_FONT_WEIGHT[value];\n          const intValue = parseInt(namedWeight ? namedWeight : value, 10);\n          this._fontWeight = intValue;\n          // leave a constant alpha edge but vary the threshold for edge of the font\n          // the higher the value for ColorCenter the thinner the font\n          this.view.setTextAlphaCenter(0.54 - this._fontBorderSize - this._fontWeight / 10000.0);\n          this.view.setTextColorCenter(0.54 - this._fontWeight / 10000.0);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.style,\n      'textShadowRadius',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 0;\n          }\n          this._fontBorderSize = value;\n          this.view.setTextAlphaCenter(0.54 - this._fontBorderSize - this._fontWeight / 10000.0);\n          this.view.setTextColorCenter(0.54 - this._fontWeight / 10000.0);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.style,\n      'textAlign',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'auto';\n          }\n          this.markTextDirty();\n          this.view.setTextHAlign(ALIGN_MAP[value]);\n        },\n      }: Object)\n    );\n    Object.defineProperty(\n      this.style,\n      'textAlignVertical',\n      ({\n        set: value => {\n          if (value === null) {\n            value = 'auto';\n          }\n          this.markTextDirty();\n          this.view.setTextVAlign(ALIGN_VERTICAL_MAP[value]);\n        },\n      }: Object)\n    );\n    // defaults\n    this.style.fontWeight = '200';\n    this.style.fontSize = 0.1;\n    this.style.textAlign = 'auto';\n    this.style.textAlignVertical = 'auto';\n    this.props.numberOfLines = 0;\n    // undefine the text color so that parent color will be used unless explicitly set\n    this.style._textColor = undefined;\n  }\n\n  /**\n   * Measure the dimensions of the text associated\n   * callback for css-layout\n   * @param: width - input width extents\n   * @param: widthMeasureMode - mode to constrain width CSS_MEASURE_MODE_EXACTLY, CSS_MEASURE_MODE_UNDEFINED\n   * @param: height - input height extents\n   * @param: heightMeasureMode - mode to constrain height CSS_MEASURE_MODE_EXACTLY, CSS_MEASURE_MODE_UNDEFINED\n   * @return: object containing measured width and height\n   */\n  measure(width: number, widthMeasureMode: number, height: number, heightMeasureMode: number): any {\n    const text = this.getText(this.style._textColor || 0xffffffff);\n    if (text) {\n      if (\n        widthMeasureMode !== Yoga.MEASURE_MODE_EXACTLY ||\n        heightMeasureMode !== Yoga.MEASURE_MODE_EXACTLY\n      ) {\n        let wordWrapped;\n        if (widthMeasureMode !== Yoga.MEASURE_MODE_UNDEFINED) {\n          wordWrapped = OVRUI.wrapLines(\n            this.guiSys.font,\n            text,\n            this._fontSize,\n            width,\n            undefined, // maxHeight\n            this.props._numberOfLines\n          );\n        } else {\n          wordWrapped = text;\n        }\n        const dim = OVRUI.measureText(this.guiSys.font, wordWrapped, this._fontSize);\n        if (widthMeasureMode !== Yoga.MEASURE_MODE_EXACTLY) {\n          width = dim.maxWidth;\n        }\n        if (heightMeasureMode !== Yoga.MEASURE_MODE_EXACTLY) {\n          height = dim.maxHeight;\n        }\n        // as we can vary between spaces this is a reasonable way to determine a snapping value\n        // to ensure we don't have rounding issues when computing text dimensions\n        const snap = this._fontSize / 100;\n        width = snapUp(width, snap);\n        height = snapUp(height, snap);\n      }\n    } else {\n      width = width || 0;\n      height = height || 0;\n    }\n    return {\n      width: width,\n      height: height,\n    };\n  }\n\n  // children of text are held within textChildren\n  // this is to avoid them being used as part of the layout pass\n  addChild(index: number, child: any) {\n    // mark the view as needing new layout\n    this.makeDirty();\n    this.textChildren.splice(index, 0, child);\n  }\n\n  removeChild(index: number) {\n    // mark the view as needing new layout\n    this.makeDirty();\n    this.textChildren.splice(index, 1);\n  }\n\n  // return the cached result or if the text is dirty calculate the concentated results\n  // TODO: encapsulate fonr properties into output\n  getText(parentTextColor: number): string {\n    if (!this._textDirty) {\n      return this._text;\n    }\n    const textColor = this.style._textColor ? this.style._textColor : parentTextColor;\n    let allText = '';\n    for (let i = 0; i < this.textChildren.length; i++) {\n      const child = this.textChildren[i];\n      if (child.isRawText && child.props.text && child.props.text.length) {\n        allText +=\n          String.fromCharCode(OVRUI.SDFFONT_MARKER_COLOR) +\n          String.fromCharCode((textColor >> 16) & 0xff) + // red\n          String.fromCharCode((textColor >> 8) & 0xff) + // green\n          String.fromCharCode((textColor >> 0) & 0xff) + // blue\n          String.fromCharCode((textColor >> 24) & 0xff) + // alpha\n          child.props.text;\n      } else if (child.isTextNode) {\n        allText += child.getText(textColor);\n      }\n    }\n    this._text = allText;\n    this._textDirty = false;\n    // make sure the visual representation is resubmitted\n    this._visualTextDirty = true;\n    return this._text;\n  }\n\n  /**\n   * Customised present layout so that the border settings can be updated\n   */\n  presentLayout() {\n    super.presentLayout();\n    const val = this.YGNode.getBorder(Yoga.Left);\n    this.view.setBorderWidth(Number.isNaN(val) ? 0 : val);\n    if (\n      this._textDirty ||\n      this._visualTextDirty ||\n      this.YGNode.getComputedWidth() !== this.previousWidth ||\n      this.YGNode.getComputedHeight() !== this.previousHeight\n    ) {\n      const wordWrapped = OVRUI.wrapLines(\n        this.guiSys.font,\n        this.getText(this.style._textColor || 0xffffffff),\n        this._fontSize,\n        this.YGNode.getComputedWidth(),\n        this.YGNode.getComputedHeight(),\n        this.props._lineCount,\n        this._isOnLayer\n      );\n      this.view.setText(wordWrapped);\n      this._visualTextDirty = false;\n      this.previousWidth = this.YGNode.getComputedWidth();\n      this.previousHeight = this.YGNode.getComputedHeight();\n    }\n  }\n\n  markTextDirty() {\n    this.YGNode.markDirty();\n    this._textDirty = true;\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe(): any {\n    return merge(super.describe(), {\n      // declare properties sent from react to runtime\n      NativeProps: {\n        numberOfLines: 'number',\n        hitSlop: 'number',\n        isOnLayer: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTRawText: runtime implementation of the RawText that is generated by <Text>[text]</Text>\n * @class RCTRawText\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\n\nexport default class RCTRawText extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n\n    this.isRawText = true;\n    Object.defineProperty(this.props, 'text', {\n      set: value => {\n        this._text = value || '';\n        this._textDirty = true;\n        this.markTextDirty();\n      },\n      get: () => {\n        return this._text;\n      },\n    });\n  }\n\n  // mark all parent textnodes dirty\n  // must descend right to root as <Text> can be nested\n  markTextDirty() {\n    let cur = this.getParent();\n    while (cur) {\n      cur.isDirty = true;\n      cur.markTextDirty && cur.markTextDirty();\n      cur = cur.getParent();\n    }\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the supported properties send from react to native\n      NativeProps: {\n        text: 'string',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Defines RCTVideo \"derived\" from RTCBaseView.\n * Assigns 'this.view' to OVRUI.UIView(guiSys),\n * @class RCTVideo\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport RCTVideoPlayer from '../Utils/RCTVideoPlayer';\nimport {RCTBindedResource} from '../Utils/RCTBindedResource';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nconst COMMAND_SEEK_TO = 1;\nconst COMMAND_PLAY = 2;\nconst COMMAND_PAUSE = 3;\n\nexport default class RCTVideo extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super();\n    this.view = new OVRUI.UIView(guiSys);\n    this._localResource = new RCTBindedResource(rnctx.RCTResourceManager);\n    this._videoModule = rnctx.VideoModule;\n    this._rnctx = rnctx;\n    this.player = new RCTVideoPlayer(rnctx, this.view.uuid);\n    this.player.onUpdateTexture = source => {\n      const loadRemoteTexture = (url, onLoad) => {\n        // When a url is null or undefined, send undefined to onLoad callback\n        const onError = () => onLoad(undefined);\n        // No progress indication for now.\n        const onProgress = undefined;\n        if (url == null) {\n          onError();\n        } else {\n          const loader = new THREE.TextureLoader();\n          loader.setCrossOrigin('Access-Control-Allow-Origin');\n          loader.load(url, onLoad, onProgress, onError);\n        }\n      };\n\n      const onLoadOrChange = texture => {\n        // ignore a old request result\n        if (source !== this._currentSource) {\n          return;\n        }\n        if (texture && texture.type === 'MonoTextureInfo') {\n          this.view.setImageTexture(texture.texture);\n        } else if (texture) {\n          this.view.setImageTexture(texture);\n        } else {\n          this.view.setImageTexture(undefined);\n        }\n      };\n\n      this._currentSource = source;\n      if (source && source.uri) {\n        if (this._localResource.isValidUrl(source.uri)) {\n          this._localResource.load(source.uri, onLoadOrChange);\n        } else {\n          loadRemoteTexture(source.uri, onLoadOrChange);\n        }\n      } else {\n        this._localResource.unregister();\n        onLoadOrChange(undefined);\n      }\n    };\n    this.player.onEmitEvent = (eventType, args) => {\n      this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [this.getTag(), eventType, args]);\n    };\n\n    // Load/unload video when the source property changes.\n    Object.defineProperty(this.props, 'source', {\n      set: value => {\n        this.player.setSource(value);\n      },\n    });\n\n    // set video poster\n    Object.defineProperty(this.props, 'poster', {\n      set: value => {\n        const url = value ? value.uri : null;\n        if (url) {\n          this.player.setPoster(value);\n        } else {\n          this.player.setPoster(null);\n        }\n      },\n    });\n\n    // Play/Pause the video.\n    Object.defineProperty(this.props, 'playControl', {\n      set: value => {\n        this.player.setPlayControl(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'autoPlay', {\n      set: value => {\n        this.player.setAutoPlay(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'loop', {\n      set: value => {\n        this.player.setLoop(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'muted', {\n      set: value => {\n        this.player.setMuted(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'volume', {\n      set: value => {\n        this.player.setVolume(value);\n      },\n    });\n\n    // assign the style property function mappings\n    // setter for tintColor, this is applied as a tint to the image\n    Object.defineProperty(\n      this.style,\n      'tintColor',\n      ({\n        set: value => {\n          this.view.setImageColor(value);\n        },\n      }: Object)\n    );\n  }\n\n  dispose() {\n    if (this._localResource) {\n      this._localResource.dispose();\n    }\n    this.player.dispose();\n    super.dispose();\n  }\n\n  receiveCommand(commandId, commandArgs) {\n    super.receiveCommand(commandId, commandArgs);\n    switch (commandId) {\n      case COMMAND_SEEK_TO:\n        const position = commandArgs ? commandArgs[0] : 0;\n        this.player.seekTo(position);\n        break;\n      case COMMAND_PLAY:\n        this.player.play();\n        break;\n      case COMMAND_PAUSE:\n        this.player.pause();\n        break;\n    }\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        autoPlay: 'boolean',\n        loop: 'boolean',\n        muted: 'boolean',\n        playControl: 'string',\n        volume: 'number',\n        source: 'object',\n        poster: 'object',\n      },\n      Commands: {\n        seekTo: COMMAND_SEEK_TO,\n        play: COMMAND_PLAY,\n        pause: COMMAND_PAUSE,\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nimport getSupportedFormats from '../Video/getSupportedFormats';\n\nexport type PlayStatus = 'closed' | 'loading' | 'error' | 'ended' | 'paused' | 'playing' | 'ready';\n\n/**\n * A internal video player used by video components.\n * RCTVideoPlayer offers the general video logic for video components.\n * @constructor\n * @param {ReactNativeContext} rnctx - React Native Context\n */\nexport default function RCTVideoPlayer(rnctx, tag) {\n  this._rnctx = rnctx;\n  this._videoModule = rnctx.VideoModule;\n  this._tag = tag;\n\n  this._counter = 0;\n  this._handle = null;\n  this._PlayStatus = 'closed';\n\n  this._source = null;\n  this._poster = null;\n  this._playControl = null;\n  this._autoPlay = false;\n  this._loop = false;\n  this._muted = null;\n  this._volume = 1.0;\n\n  this.onUpdateTexture = undefined;\n  this.onEmitEvent = undefined;\n  this._onCanPlay = this._onCanPlay.bind(this);\n  this._onPlaying = this._onPlaying.bind(this);\n  this._onPause = this._onPause.bind(this);\n  this._onEnded = this._onEnded.bind(this);\n  this._onError = this._onError.bind(this);\n  this._onDurationChange = this._onDurationChange.bind(this);\n  this._onTimeUpdate = this._onTimeUpdate.bind(this);\n}\n\nRCTVideoPlayer.prototype = Object.assign(Object.create(Object.prototype), {\n  constructor: RCTVideoPlayer,\n\n  _updateTexture() {\n    const source = this._handle\n      ? {\n          ...this._source,\n          uri: 'MonoTexture://' + this._handle,\n        }\n      : null;\n    this.onUpdateTexture && this.onUpdateTexture(source);\n  },\n\n  _updateTextureWithPoster() {\n    this.onUpdateTexture && this.onUpdateTexture(this._poster);\n  },\n\n  _onCanPlay(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    if (!this._poster) {\n      this._updateTexture();\n    }\n    this._updatePlayStatus('ready');\n    // Play video if in auto-play mode, or status is set to 'play'\n    if ((this._autoPlay && this._playControl !== 'pause') || this._playControl === 'play') {\n      this._videoModule.play(handle);\n    }\n  },\n\n  _onPlaying() {\n    this._updatePlayStatus('playing');\n    this._updateTexture();\n  },\n\n  _onPause() {\n    this._updatePlayStatus('paused');\n  },\n\n  _onEnded(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('ended');\n    // Play video if in loop mode and status not set to 'stop'\n    if (this._loop && this._playControl !== 'pause') {\n      this._videoModule.play(handle);\n    }\n    this._emitEvent('topEnded', []);\n  },\n\n  _onError(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    this._updatePlayStatus('error');\n  },\n\n  _onDurationChange(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    const duration = event.target && event.target.duration;\n    if (duration) {\n      this._emitEvent('topDurationChange', {duration: duration});\n    }\n  },\n\n  _onTimeUpdate(handle, event) {\n    if (handle !== this._handle) {\n      return;\n    }\n    const currentTime = event.target && event.target.currentTime;\n    if (currentTime) {\n      this._emitEvent('topTimeUpdate', {currentTime: currentTime});\n    }\n  },\n\n  _chooseSupportSource(source) {\n    if (Array.isArray(source)) {\n      for (let i = 0; i < source.length; i++) {\n        const sourceInst = source[i];\n        if (sourceInst && typeof sourceInst === 'object' && 'uri' in sourceInst) {\n          if ('format' in sourceInst) {\n            if (getSupportedFormats().indexOf(sourceInst.format) > -1) {\n              return sourceInst;\n            }\n          } else {\n            // If the source does not specify its format, we suppose it'll can be chose\n            // whatever format is supported.\n            return sourceInst;\n          }\n        }\n      }\n      // If none of source formats is supported\n      if (__DEV__) {\n        console.warn('No supported video format found in video source');\n      }\n      return null;\n    } else if (source) {\n      return source;\n    } else {\n      return null;\n    }\n  },\n\n  setSource(source) {\n    const choseSource = this._chooseSupportSource(source);\n    const prevUrl = this._source ? this._source.uri : null;\n    const curUrl = choseSource ? choseSource.uri : null;\n    const curFormat = choseSource ? choseSource.format : null;\n    if (source && !curUrl) {\n      if (__DEV__) {\n        console.warn(\n          \"Video source must be in format {uri: 'http'} \" +\n            \"or [{uri: 'http', format: 'mp4'}, {uri: 'http', format: 'webm'}, ..]\"\n        );\n      }\n    }\n    this._source = choseSource;\n\n    // If url change, update handle\n    if (prevUrl !== curUrl) {\n      // User might have set source to null to remove the video.\n      if (!curUrl) {\n        const prevHandle = this._handle;\n        this._handle = null;\n        if (prevHandle) {\n          this._updateTexture();\n          this._videoModule.unload(prevHandle);\n        }\n        this._updatePlayStatus('closed');\n      } else {\n        // Generate unique handle and register it with VideoModule.\n        const prevHandle = this._handle;\n        this._counter += 1;\n        this._handle = [curUrl, this._tag, this._counter].join('-');\n        this._videoModule.addHandle(this._handle);\n        this._videoModule.setUrl(this._handle, curUrl);\n        this._videoModule.setFormat(this._handle, curFormat);\n        if (this._source.metaData) {\n          this._videoModule.setMetaData(this._handle, this._source.metaData);\n        }\n\n        // Load video.\n        this._videoModule._addMediaEventListener(this._handle, 'canplay', this._onCanPlay);\n        this._videoModule._addMediaEventListener(this._handle, 'playing', this._onPlaying);\n        this._videoModule._addMediaEventListener(this._handle, 'pause', this._onPause);\n        this._videoModule._addMediaEventListener(this._handle, 'ended', this._onEnded);\n        this._videoModule._addMediaEventListener(this._handle, 'error', this._onError);\n        this._videoModule._addMediaEventListener(\n          this._handle,\n          'durationchange',\n          this._onDurationChange\n        );\n        this._videoModule._addMediaEventListener(this._handle, 'timeupdate', this._onTimeUpdate);\n        this._videoModule.load(this._handle);\n        if (prevHandle) {\n          this._videoModule.unload(prevHandle);\n        }\n        this._updatePlayStatus('loading');\n        if (this._poster) {\n          this._updateTextureWithPoster();\n        }\n      }\n      this._updateVideoStates();\n    }\n  },\n\n  setPoster(url) {\n    this._poster = url;\n    if (this._PlayStatus === 'loading' && this._poster) {\n      this._updateTextureWithPoster();\n    }\n  },\n\n  _emitEvent: function(eventType, args) {\n    this.onEmitEvent && this.onEmitEvent(eventType, args);\n  },\n\n  _updatePlayStatus: function(status) {\n    if (this._PlayStatus !== status) {\n      this._PlayStatus = status;\n      this._emitEvent('topPlayStatusChange', {playStatus: this._PlayStatus});\n    }\n  },\n\n  _updateVideoStates: function() {\n    if (this._handle) {\n      this._videoModule.setMuted(this._handle, this._muted);\n      this._videoModule.setVolume(this._handle, this._volume);\n    }\n  },\n\n  play() {\n    if (this._handle) {\n      this._videoModule.play(this._handle);\n    }\n  },\n\n  pause() {\n    if (this._handle) {\n      this._videoModule.pause(this._handle);\n    }\n  },\n\n  seekTo(position) {\n    this._videoModule.seekTo(this._handle, position);\n  },\n\n  setPlayControl(playControl) {\n    this._playControl = playControl;\n    if (!this._handle) {\n      return;\n    }\n\n    if (this._playControl === 'pause') {\n      this._videoModule.pause(this._handle);\n    } else if (this._playControl === 'play') {\n      this._videoModule.play(this._handle);\n    }\n  },\n\n  setAutoPlay(autoPlay) {\n    this._autoPlay = autoPlay;\n  },\n\n  setLoop(loop) {\n    this._loop = loop;\n  },\n\n  setMuted(muted) {\n    this._muted = muted;\n    if (this._handle) {\n      this._videoModule.setMuted(this._handle, this._muted);\n    }\n  },\n\n  setVolume(volume) {\n    volume = typeof volume === 'number' ? volume : 1.0;\n    this._volume = volume;\n    if (this._handle) {\n      this._videoModule.setVolume(this._handle, this._volume);\n    }\n  },\n\n  dispose() {\n    if (this._handle) {\n      this._videoModule.unload(this._handle);\n    }\n  },\n});\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTVideoPano: runtime implementation of the <VideoPano source={{uri:URL, cubestrip:isCubestrip}}>\n * creates a 1000 m radius globe/cube that as a child of the view for playing\n * 360 videos. View responds to layout and transforms with pivot point the center\n * of the view\n * @class RCTVideoPano\n * @extends RCTPano\n */\n\nimport RCTPano from './Pano';\nimport merge from '../Utils/merge';\nimport RCTVideoPlayer from '../Utils/RCTVideoPlayer';\n\nconst COMMAND_SEEK_TO = 1;\nconst COMMAND_PLAY = 2;\nconst COMMAND_PAUSE = 3;\n\nexport default class RCTVideoPano extends RCTPano {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys, rnctx) {\n    super(guiSys, rnctx);\n    this._rnctx = rnctx;\n    this.player = new RCTVideoPlayer(rnctx, this.view.uuid);\n    this.player.onUpdateTexture = source => {\n      super.setSource(source);\n    };\n    this.player.onEmitEvent = (eventType, args) => {\n      this._rnctx.callFunction('RCTEventEmitter', 'receiveEvent', [this.getTag(), eventType, args]);\n    };\n\n    // set video poster\n    Object.defineProperty(this.props, 'poster', {\n      set: value => {\n        const url = value ? value.uri : null;\n        if (url) {\n          this.player.setPoster(value);\n        } else {\n          this.player.setPoster(null);\n        }\n      },\n    });\n\n    // Play/Pause the video.\n    Object.defineProperty(this.props, 'playControl', {\n      set: value => {\n        this.player.setPlayControl(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'autoPlay', {\n      set: value => {\n        this.player.setAutoPlay(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'loop', {\n      set: value => {\n        this.player.setLoop(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'muted', {\n      set: value => {\n        this.player.setMuted(value);\n      },\n    });\n\n    Object.defineProperty(this.props, 'volume', {\n      set: value => {\n        this.player.setVolume(value);\n      },\n    });\n  }\n\n  receiveCommand(commandId, commandArgs) {\n    super.receiveCommand(commandId, commandArgs);\n    switch (commandId) {\n      case COMMAND_SEEK_TO:\n        const position = commandArgs ? commandArgs[0] : 0;\n        this.player.seekTo(position);\n        break;\n      case COMMAND_PLAY:\n        this.player.play();\n        break;\n      case COMMAND_PAUSE:\n        this.player.pause();\n        break;\n    }\n  }\n\n  setSource(value) {\n    this.player.setSource(value);\n  }\n\n  dispose() {\n    this.player.dispose();\n    super.dispose();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      NativeProps: {\n        autoPlay: 'boolean',\n        loop: 'boolean',\n        muted: 'boolean',\n        playControl: 'string',\n        volume: 'number',\n        source: 'object',\n        poster: 'object',\n      },\n      Commands: {\n        seekTo: COMMAND_SEEK_TO,\n        play: COMMAND_PLAY,\n        pause: COMMAND_PAUSE,\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTAmbientLight: runtime implementation of the <AmbientLight >\n * https://threejs.org/docs/index.html#api/lights/AmbientLight\n * @class RCTAmbientLight\n * @extends RCTBaseView\n * @flow\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nimport type {GuiSys} from 'ovrui';\n\nexport default class RCTAmbientLight extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys: GuiSys) {\n    super();\n    // create the ambient light as a child of an empty UIView\n    // this allows embedding in layouts\n    const light = new THREE.AmbientLight();\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(light);\n    // In \"physically correct\" mode, the product of color * intensity is\n    // interpreted as luminous intensity measured in candelas.\n    Object.defineProperty(\n      this.props,\n      'intensity',\n      ({\n        set: value => {\n          light.intensity = value;\n        },\n      }: Object)\n    );\n    // Color of the light.\n    Object.defineProperty(\n      this.style,\n      'color',\n      ({\n        set: value => {\n          light.color.set(value);\n        },\n      }: Object)\n    );\n\n    // defaults that match three.js\n    this.props.intensity = 1;\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        intensity: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTDirectionalLight: runtime implementation of the <DirectionalLight >\n * https://threejs.org/docs/index.html#api/lights/DirectionalLight\n * Directional light implemented with PointLight with no decay and no distance falloff\n * Workaround for directional lights not correctly functioning, will revisit\n * @class RCTAmbientLight\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nexport default class RCTDirectionalLight extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n\n    // create the Point light as a child of an empty UIView\n    // this allows embedding in layouts\n    // Point light with large offset and no decay and no distance used inplace\n    // of Direction light which was incorrectly lighting\n    const light = new THREE.PointLight();\n    light.decay = 0;\n    light.position.set(0, 1000, 0);\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(light);\n    // In \"physically correct\" mode, the product of color * intensity is\n    // interpreted as luminous intensity measured in candelas.\n    Object.defineProperty(this.props, 'intensity', {\n      set: value => {\n        light.intensity = value;\n      },\n    });\n    // Color of the light.\n    Object.defineProperty(this.style, 'color', {\n      set: value => {\n        light.color.set(value);\n      },\n    });\n\n    // defaults that match three.js\n    this.props.intensity = 1;\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        intensity: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTPointLight: runtime implementation of the <PointLight >\n * https://threejs.org/docs/index.html#api/lights/PointLight\n * @class RCTAmbientLight\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nexport default class RCTPointLight extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n    const light = new THREE.PointLight();\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(light);\n    // In \"physically correct\" mode, the product of color * intensity is\n    // interpreted as luminous intensity measured in candelas.\n    Object.defineProperty(this.props, 'intensity', {\n      set: value => {\n        light.intensity = value;\n      },\n    });\n    // If non-zero, light will attenuate linearly from maximum intensity at\n    // light position down to zero at distance.\n    Object.defineProperty(this.props, 'distance', {\n      set: value => {\n        light.distance = value;\n      },\n    });\n    // The amount the light dims along the distance of the light\n    // In \"physically correct\" mode, decay = 2 leads to physically realistic light falloff.\n    Object.defineProperty(this.props, 'decay', {\n      set: value => {\n        light.decay = value;\n      },\n    });\n    // Color of the light.\n    Object.defineProperty(this.style, 'color', {\n      set: value => {\n        light.color.set(value);\n      },\n    });\n\n    // defaults that match three.js\n    this.props.intensity = 1;\n    this.props.distance = 0;\n    this.props.decay = 1;\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        intensity: 'number',\n        distance: 'number',\n        decay: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * RCTSpotLight: runtime implementation of the <SpotLight >\n * https://threejs.org/docs/index.html#api/lights/SpotLight\n * @class RCTSpotLight\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\n\nexport default class RCTSpotLight extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n    const light = new THREE.SpotLight();\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(light);\n\n    // In \"physically correct\" mode, the product of color * intensity is\n    // interpreted as luminous intensity measured in candelas.\n    Object.defineProperty(this.props, 'intensity', {\n      set: value => {\n        light.intensity = value;\n      },\n    });\n    // If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance.\n    Object.defineProperty(this.props, 'distance', {\n      set: value => {\n        light.distance = value;\n      },\n    });\n    // The amount the light dims along the distance of the light\n    // In \"physically correct\" mode, decay = 2 leads to physically realistic light falloff.\n    Object.defineProperty(this.props, 'decay', {\n      set: value => {\n        light.decay = value;\n      },\n    });\n    // Maximum angle of light dispersion from its direction whose upper bound is Math.PI/2.\n    Object.defineProperty(this.props, 'angle', {\n      set: value => {\n        light.angle = value * Math.PI / 180;\n      },\n    });\n    // Percent of the spotlight cone that is attenuated due to penumbra.\n    // Takes values between zero and 100. Default is zero.\n    Object.defineProperty(this.props, 'penumbra', {\n      set: value => {\n        light.penumbra = Math.min(Math.max(value, 0), 100) / 100.0;\n      },\n    });\n    // Color of the light.\n    Object.defineProperty(this.style, 'color', {\n      set: value => {\n        light.color.set(value);\n      },\n    });\n\n    // defaults that match three.js\n    this.props.intensity = 1;\n    this.props.distance = 0;\n    this.props.decay = 1;\n    this.props.angle = 180;\n    this.props.penumbra = 0;\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        intensity: 'number',\n        distance: 'number',\n        decay: 'number',\n        angle: 'number',\n        penumbra: 'number',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * @class RCTCylindricalPanel\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nexport default class RCTCylindricalPanel extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n\n    this.material = new THREE.MeshBasicMaterial({\n      wireframe: false,\n      transparent: true,\n      premultipliedAlpha: true,\n      color: 'white',\n      side: THREE.DoubleSide,\n      depthWrite: false,\n      blending: THREE.CustomBlending,\n      blendSrc: THREE.OneFactor,\n      blendDst: THREE.OneMinusSrcAlphaFactor,\n      blendEquation: THREE.AddEquation,\n      blendSrcAlpha: THREE.OneFactor,\n      blendDstAlpha: THREE.OneMinusSrcAlphaFactor,\n      blendEquationAlpha: THREE.AddEquation,\n    });\n\n    this.guiSys = guiSys;\n    this.camera = new THREE.OrthographicCamera();\n    this.subScene = new THREE.Scene();\n    const geometry = new THREE.CylinderGeometry(3, 3, 2, 1, 5, true, 0, 2.0 * Math.PI);\n    this.cylinder = new THREE.Mesh(geometry, this.material);\n    this.cylinder.subScene = this.subScene;\n    this.cylinder.subSceneCamera = this.camera;\n    this.cylinder.scale.z = -1;\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(this.cylinder);\n\n    this.subScene.scale.y = -1;\n    this.isLayer = true;\n\n    Object.defineProperty(this.style, 'opacity', {\n      configurable: true,\n      set: value => {\n        this.material.opacity = value;\n      },\n    });\n\n    Object.defineProperty(this.props, 'layer', {\n      set: value => {\n        this.props._layerWidth = value.width;\n        this.props._layerHeight = value.height;\n        this.props._layerDensity = value.density;\n        // default distance to 3m\n        this.props._layerRadius = value.radius || 3;\n        this.view.zOffset = this.props._layerRadius;\n        this.subScene._rttWidth = value.width;\n        this.subScene._rttHeight = value.height;\n        this.cylinder.geometry.dispose();\n        // The subtended angle given the fraction of the layer (layerDensity) covered by the\n        // layerWidth\n        const delta = 2 * Math.PI * this.props._layerWidth / this.props._layerDensity;\n        // The same calculation as shell\n        // there is not a direct correlation but for a small angle (<60) the arc of the cylinder\n        // is also a reasonable approximation of the chord (within 95%)\n        // as our angle is small and dealing with px height rather than angles a proportion of an arc\n        // is used\n        const halfHeight =\n          this.props._layerRadius * (Math.PI * value.height / this.props._layerDensity);\n        this.cylinder.geometry = new THREE.CylinderGeometry(\n          this.props._layerRadius,\n          this.props._layerRadius,\n          halfHeight * 2,\n          60,\n          6,\n          true,\n          -delta * 0.5,\n          delta\n        );\n        this.cylinder.needsUpdate = true;\n        this._createRTT();\n      },\n    });\n  }\n\n  _createRTT() {\n    if (this.props._layerWidth > 0 && this.props._layerHeight > 0) {\n      if (!this.rtt) {\n        this.rtt = new THREE.WebGLRenderTarget(this.props._layerWidth, this.props._layerHeight, {\n          minFilter: THREE.LinearFilter,\n          magFilter: THREE.LinearFilter,\n          format: THREE.RGBAFormat,\n        });\n      } else {\n        this.rtt.setSize(this.props._layerWidth, this.props._layerHeight);\n      }\n      this.material.map = this.rtt.texture;\n      this.material.needsUpdate = true;\n      this.camera = new THREE.OrthographicCamera(\n        0,\n        this.props._layerWidth,\n        0,\n        this.props._layerHeight,\n        -1000,\n        1000\n      );\n      this.camera.setViewOffset(\n        this.props._layerWidth,\n        this.props._layerHeight,\n        0,\n        0,\n        this.props._layerWidth,\n        this.props._layerHeight\n      );\n      this.cylinder.subSceneCamera = this.camera;\n      this.guiSys.unregisterOffscreenRender(this.offscreenUID);\n      this.offscreenUID = this.guiSys.registerOffscreenRender(this.subScene, this.camera, this.rtt);\n    }\n  }\n\n  addChild(index, child) {\n    this.children.splice(index, 0, child);\n    this.YGNode.insertChild(child.YGNode, index);\n    this.subScene.add(child.view);\n  }\n\n  removeChild(index) {\n    this.subScene.remove(this.children[index].view);\n    this.YGNode.removeChild(this.YGNode.getChild(index));\n    this.children.splice(index, 1);\n  }\n\n  presentLayout() {\n    super.presentLayout();\n    this.cylinder.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n  }\n\n  dispose() {\n    this.guiSys.unregisterOffscreenRender(this.offscreenUID);\n    super.dispose();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        layer: 'object',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * @class RCTQuadPanel\n * @extends RCTBaseView\n */\n\nimport RCTBaseView from './BaseView';\nimport merge from '../Utils/merge';\nimport * as OVRUI from 'ovrui';\nimport * as THREE from 'three';\nimport * as Yoga from '../Utils/Yoga.bundle';\n\nexport default class RCTQuadPanel extends RCTBaseView {\n  /**\n   * constructor: allocates the required resources and sets defaults\n   */\n  constructor(guiSys) {\n    super();\n\n    this.material = new THREE.MeshBasicMaterial({\n      wireframe: false,\n      transparent: true,\n      premultipliedAlpha: true,\n      color: 'white',\n      side: THREE.DoubleSide,\n      depthWrite: false,\n      blending: THREE.CustomBlending,\n      blendSrc: THREE.OneFactor,\n      blendDst: THREE.OneMinusSrcAlphaFactor,\n      blendEquation: THREE.AddEquation,\n      blendSrcAlpha: THREE.OneFactor,\n      blendDstAlpha: THREE.OneMinusSrcAlphaFactor,\n      blendEquationAlpha: THREE.AddEquation,\n    });\n\n    this.guiSys = guiSys;\n    this.camera = new THREE.OrthographicCamera();\n    this.subScene = new THREE.Scene();\n    const geometry = new THREE.PlaneGeometry(1, 1, 1, 1);\n    this.plane = new THREE.Mesh(geometry, this.material);\n    this.plane.subScene = this.subScene;\n    this.plane.subSceneCamera = this.camera;\n    this.plane.scale.z = -1;\n    this.view = new OVRUI.UIView(guiSys);\n    this.view.add(this.plane);\n\n    this.subScene.scale.y = -1;\n    this.isLayer = true;\n\n    Object.defineProperty(this.style, 'opacity', {\n      configurable: true,\n      set: value => {\n        this.material.opacity = value;\n      },\n    });\n\n    Object.defineProperty(this.props, 'layer', {\n      set: value => {\n        this.props._layerWidth = value.width;\n        this.props._layerHeight = value.height;\n        this.props._layerDensity = value.density;\n        // default distance to 4m\n        this.props._layerDistance = value.distance || 4;\n        this.subScene._rttWidth = value.width;\n        this.subScene._rttHeight = value.height;\n        this.plane.geometry.dispose();\n        // The same calculation as shell\n        // there is not a direct correlation but for a small angle (<60) the arc\n        // is also a reasonable approximation of the chord (within 95%)\n        // as our angle is small and dealing with px height rather than angles a proportion of an arc\n        // is used\n        const halfWidth =\n          this.props._layerDistance * (Math.PI * value.width / this.props._layerDensity);\n        const halfHeight =\n          this.props._layerDistance * (Math.PI * value.height / this.props._layerDensity);\n        this.plane.geometry = new THREE.PlaneGeometry(halfWidth * 2, halfHeight * 2, 1, 1);\n        this.plane.needsUpdate = true;\n        this._createRTT();\n      },\n    });\n  }\n\n  _createRTT() {\n    if (this.props._layerWidth > 0 && this.props._layerHeight > 0) {\n      if (!this.rtt) {\n        this.rtt = new THREE.WebGLRenderTarget(this.props._layerWidth, this.props._layerHeight, {\n          minFilter: THREE.LinearFilter,\n          magFilter: THREE.LinearFilter,\n          format: THREE.RGBAFormat,\n        });\n      } else {\n        this.rtt.setSize(this.props._layerWidth, this.props._layerHeight);\n      }\n      this.material.map = this.rtt.texture;\n      this.material.needsUpdate = true;\n      this.camera = new THREE.OrthographicCamera(\n        0,\n        this.props._layerWidth,\n        0,\n        this.props._layerHeight,\n        -1000,\n        1000\n      );\n      this.camera.setViewOffset(\n        this.props._layerWidth,\n        this.props._layerHeight,\n        0,\n        0,\n        this.props._layerWidth,\n        this.props._layerHeight\n      );\n      this.plane.subSceneCamera = this.camera;\n      this.guiSys.unregisterOffscreenRender(this.offscreenUID);\n      this.offscreenUID = this.guiSys.registerOffscreenRender(this.subScene, this.camera, this.rtt);\n    }\n  }\n\n  addChild(index, child) {\n    this.children.splice(index, 0, child);\n    this.YGNode.insertChild(child.YGNode, index);\n    this.subScene.add(child.view);\n  }\n\n  removeChild(index) {\n    this.subScene.remove(this.children[index].view);\n    this.YGNode.removeChild(this.YGNode.getChild(index));\n    this.children.splice(index, 1);\n  }\n\n  presentLayout() {\n    super.presentLayout();\n    this.plane.visible = this.YGNode.getDisplay() !== Yoga.DISPLAY_NONE;\n  }\n\n  dispose() {\n    this.guiSys.unregisterOffscreenRender(this.offscreenUID);\n    super.dispose();\n  }\n\n  /**\n   * Describes the properties representable by this view type and merges\n   * with super type\n   */\n  static describe() {\n    return merge(super.describe(), {\n      // declare the native props sent from react to runtime\n      NativeProps: {\n        layer: 'object',\n      },\n    });\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * WebSocketModule is an implementation of the websocket interface used by React native.\n * These methods are not intended to be called directly. Rather, they are\n * called remotely by the WebSocketModule module on the React side.\n * @class WebSocketModule\n * @extends Module\n */\nexport default class WebSocketModule extends Module {\n  _rnctx: ReactNativeContext;\n  _sockets: {[id: string]: WebSocket};\n\n  /**\n   * Constructs a WebSocketModule with a specific React Native Context\n   */\n  constructor(rnctx: ReactNativeContext) {\n    super('WebSocketModule');\n    this._sockets = {};\n    this._rnctx = rnctx;\n  }\n\n  /**\n   * Establish a connection and associate with socketID. socketID is used for future\n   * communication with React\n   * @param url - string Url to connect to\n   * @param protocols - protocols for creating the WebSocket instance\n   * @param options - currently unused\n   * @param socketId - ID used to represent this connection in React\n   */\n  connect(url: string, protocols: string | Array<string>, options: any, socketId: number) {\n    const socket = protocols ? new WebSocket(url, protocols) : new WebSocket(url);\n    socket.binaryType = 'arraybuffer';\n    this._sockets[String(socketId)] = socket;\n\n    // set the onclose, onerror and onmessage functions so that the\n    // React event can be dispatched\n    socket.onclose = event => {\n      const payload = {\n        id: socketId,\n        code: event.code,\n        reason: event.reason,\n      };\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', ['websocketClosed', payload]);\n    };\n    socket.onerror = event => {\n      const payload = {\n        id: socketId,\n        message: 'Native WebSocket error',\n      };\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', ['websocketFailed', payload]);\n    };\n    socket.onmessage = event => {\n      let data = event.data;\n      if (data instanceof ArrayBuffer) {\n        // Convert arraybuffer to string because the current bridge format is\n        // automatically stringified to account for metadata and to speed up\n        // older versions of Blink. We may be able to avoid this indirection\n        // later on.\n        const arr = new Uint8Array(data);\n        const str = new Array(arr.byteLength);\n        for (let i = 0; i < str.length; i++) {\n          str[i] = String.fromCharCode(arr[i]);\n        }\n        data = btoa(str.join(''));\n      }\n      const payload = {\n        id: socketId,\n        type: typeof event.data === 'string' ? 'string' : 'binary',\n        data: data,\n      };\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', ['websocketMessage', payload]);\n    };\n    socket.onopen = event => {\n      const payload = {\n        id: socketId,\n      };\n      this._rnctx.callFunction('RCTDeviceEventEmitter', 'emit', ['websocketOpen', payload]);\n    };\n  }\n\n  /**\n   * internal function to send the data\n   * maps the React socketID to the instance of WebSocket\n   */\n  _send(data: string | ArrayBuffer, socketId: number) {\n    const socket = this._sockets[String(socketId)];\n    if (!socket) {\n      throw new Error('Error while sending data to WebSocket: no such socket');\n    }\n    socket.send(data);\n  }\n\n  /**\n   * send\n   * function called by the React code through messages\n   * @param data - data from react\n   * @param socketId - React socket id\n   */\n  send(data: string, socketId: number) {\n    this._send(data, socketId);\n  }\n\n  /**\n   * sendBinary\n   * function called by the React code through messages\n   * @param data - data from react\n   * @param socketId - React socket id\n   */\n  sendBinary(data: string, socketId: number) {\n    const chars = atob(data);\n    const array = new Uint8Array(chars.length);\n    for (let i = 0; i < chars.length; i++) {\n      array[i] = chars.charCodeAt(i) & 255;\n    }\n    this._send(array.buffer, socketId);\n  }\n\n  /**\n   * ping\n   * Unsupported in WebVR due to\n   * \"Cannot send a ping. Browser WebSocket APIs are not capable of sending specific opcodes\"\n   * @param socketId - React socket id\n   */\n  ping(socketId: number) {\n    throw new Error(\n      'Cannot send a ping. Browser WebSocket APIs are not capable of sending specific opcodes'\n    );\n  }\n\n  /**\n   * close\n   * function called by the React code through messages\n   * @param codeOrId - if reason is undefined or sockedId is undefined this is id, otherwise\n   *                   it is the code to report to the websocket\n   * @param reason - reason distributed to WebSocket close, maybe undefined\n   * @param socketId - React socket id or maybe undefined in which codeorID contains the socket\n   */\n  close(codeOrId: number, reason: void | string, socketId: void | number) {\n    let id;\n    if (typeof reason !== 'undefined' && typeof socketId !== 'undefined') {\n      id = String(socketId);\n      const socket = this._sockets[id];\n      if (!socket) {\n        return;\n      }\n      socket.close(codeOrId, reason);\n    } else {\n      id = String(codeOrId);\n      const socket = this._sockets[id];\n      if (!socket) {\n        return;\n      }\n      socket.close();\n    }\n    delete this._sockets[id];\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\n/**\n * This provides a common module for both WebVR and other versions of React VR\n * so that the runtime and its particular settings can be determined and acted\n * upon in the React code\n * @class ReactVRConstants\n * @extends Module\n */\nexport default class ReactVRConstants extends Module {\n  Version: string;\n  Runtime: string;\n  RuntimeVersion: string;\n  userAgent: string;\n  platform: string;\n\n  constructor() {\n    super('ReactVRConstants');\n    this.Version = '0.1.0';\n    this.Runtime = 'WebVR';\n    this.RuntimeVersion = this.Version;\n    this.userAgent = navigator && navigator.userAgent;\n    this.platform = navigator && navigator.platform;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\ntype Stack = Array<{\n  file?: string,\n  methodName?: string,\n  lineNumber?: string,\n  column?: string,\n}>;\n\n/**\n * Module to handle reporting of exceptions so that they are displayed in a useful manner\n * The stack is reordered so that the bottom of the console contains the top of the stack and therefore minimizes\n * scrolling\n * @class RCTExceptionsManager\n * @extends Module\n */\nexport default class RCTExceptionsManager extends Module {\n  hadFatal: void | number;\n\n  constructor() {\n    super('RCTExceptionsManager');\n    this.hadFatal = undefined;\n  }\n\n  displayStackAndMessage(stack: Stack, message: string) {\n    let output = '\\n';\n    if (\n      message.indexOf('has not been registered') === -1 ||\n      message.indexOf('AppRegistry.registerComponent') === -1\n    ) {\n      output += '-----\\n';\n      for (let i = 0; i < stack.length; i++) {\n        const file = stack[i].file || '[unknown]';\n        const methodName = stack[i].methodName || '[unknown]';\n        const lineNumber = stack[i].lineNumber || 0;\n        const column = stack[i].column || 0;\n        output += '> ' + methodName + '@' + file + ' ' + lineNumber + ':' + column + '\\n';\n      }\n      output += '-----\\n';\n    }\n    output += message || '';\n    console.error(output);\n  }\n\n  reportSoftException(message: string, stack: Stack, exceptionId: number) {\n    // only report a single fatal\n    if (this.hadFatal) {\n      return;\n    }\n    const reverseStack = stack.slice();\n    reverseStack.reverse();\n    this.displayStackAndMessage(reverseStack, message);\n  }\n\n  reportFatalException(message: string, stack: Stack, exceptionId: number) {\n    // only report a single fatal\n    if (this.hadFatal) {\n      return;\n    }\n    const reverseStack = stack.slice();\n    reverseStack.reverse();\n    this.displayStackAndMessage(reverseStack, message);\n    this.hadFatal = exceptionId;\n  }\n\n  updateExceptionMessage(message: string, stack: Stack, exceptionId: number) {\n    // if we have had a fatal exception only update that exception\n    if (this.hadFatal && this.hadFatal !== exceptionId) {\n      return;\n    }\n    const reverseStack = stack.slice();\n    reverseStack.reverse();\n    // attempt to prepend to file:/// so that we can directly click to the problem file within browser\n    for (let i = 0; i < reverseStack.length; i++) {\n      if (reverseStack[i].file && reverseStack[i].file.indexOf(':') <= 2) {\n        reverseStack[i].file = 'file:///' + reverseStack[i].file;\n      }\n    }\n    this.displayStackAndMessage(reverseStack, message);\n  }\n\n  reportUnhandledException(message: string, stack: Stack) {\n    // only report a single fatal\n    if (this.hadFatal) {\n      return;\n    }\n    const reverseStack = stack.slice();\n    reverseStack.reverse();\n    this.displayStackAndMessage(reverseStack, message);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Module from './Module';\n\nimport type {ReactNativeContext} from '../ReactNativeContext';\n\n/**\n * Source code module to allow React code to lookup source maps\n * @class RCTSourceCode\n * @extends Module\n */\nexport default class RCTSourceCode extends Module {\n  scriptURL: string;\n  _rnctx: ReactNativeContext;\n\n  constructor(rnctx: ReactNativeContext) {\n    super('RCTSourceCode');\n    this._rnctx = rnctx;\n\n    this.scriptURL = location.protocol + '//' + location.host;\n    // match to remove filename (usually index.html) after the last slash in pathname\n    const match = location.pathname && location.pathname.match(/^.*\\//);\n    const path = match ? match[0] : null;\n    this.scriptURL += path ? path : '/';\n  }\n\n  getScriptText(resolve: number, reject: number) {\n    this._rnctx.invokeCallback(resolve, [\n      {fullSourceMappingURL: location.protocol + '//' + location.host + '/'},\n    ]);\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport Bridge from './Bridge';\n\nexport type WorkerBridgeOptions = {\n  enableDevTools?: boolean,\n  enableHotReload?: boolean,\n};\n\n// Supplying the bootstrap code as a Blob allows us to reduce the minimum number\n// of files from 3 (client, bridge, React) to just two (client and React)\nconst BRIDGE_CODE = `\nvar Status = undefined;\n\nonmessage = function(e) {\n  var msg = JSON.parse(e.data);\n  if (!msg || !msg.cmd) {\n    return;\n  }\n  if (msg.cmd === 'moduleConfig' ) {\n    __fbBatchedBridgeConfig = msg.moduleConfig;\n    Status = 'moduleConfig';\n  } else\n  if (msg.cmd === 'bundle' && Status === 'moduleConfig') {\n    try {\n      importScripts(msg.bundleName);\n      Status = 'bundle';\n    } catch (e) {\n      console.warn(e);\n      var xmlhttp = new XMLHttpRequest();\n      xmlhttp.open(\"GET\", msg.bundleName, true);\n      xmlhttp.onreadystatechange=function() {\n        if (xmlhttp.readyState == 4) {\n          var result = JSON.parse(xmlhttp.responseText);\n          if (result) {\n            if (result.type === 'UnableToResolveError' || result.type === 'NotFoundError') {\n              console.warn(result.message);\n            } else {\n              if (result.snippet) {\n                // remove all color characters and split the lines for improved clarity\n                result.snippet = result.snippet.replace(/\\\\u001b\\\\[.*?m/g, '').split('\\\\n');\n              }\n              if (result.filename && result.filename.indexOf(':') <= 2) {\n                result.filename = 'file:///' + result.filename;\n              }\n              if (result.errors) {\n                for (var i=0; i<result.errors.length; i++) {\n                  var error = result.errors[i];\n                  if (error.filename && error.filename.indexOf(':') <= 2) {\n                    error.filename = 'file:///' + error.filename;\n                  }\n                }\n              }\n              console.warn(JSON.stringify(result, undefined, 2));\n            }\n          }\n        }\n      }\n      xmlhttp.send(null);\n    }\n  } else if (Status === 'bundle') {\n    if (msg.cmd === 'exec') {\n      var results = __fbBatchedBridge.callFunctionReturnFlushedQueue.apply(null, [msg.module, msg.function, msg.args]);\n      try {\n        postMessage({cmd: 'exec', results: results});\n      } catch (e) {\n        console.warn(e);\n        console.warn(msg);\n        console.warn(JSON.stringify(results))\n      }\n    } else\n    if (msg.cmd === 'invoke') {\n      var results = __fbBatchedBridge.invokeCallbackAndReturnFlushedQueue.apply(null, [msg.id, msg.args]);\n      try {\n        postMessage({cmd: 'exec', results: results});\n      } catch (e) {\n        console.warn(e);\n        console.warn(msg);\n        console.warn(JSON.stringify(results))\n      }\n    } else\n    if (msg.cmd === 'flush') {\n      var results = __fbBatchedBridge.flushedQueue.apply(null);\n      try {\n        postMessage({cmd: 'exec', results: results});\n      } catch (e) {\n        console.warn(e);\n        console.warn(msg);\n        console.warn(JSON.stringify(results))\n      }\n    }\n  }\n}\n`;\n\nexport default class WebWorkerBridge extends Bridge {\n  _worker: Worker;\n\n  constructor(options: WorkerBridgeOptions = {}) {\n    super();\n\n    let bridgeCode = BRIDGE_CODE;\n    if (options.enableDevTools) {\n      bridgeCode += '__DEVTOOLS__ = true;\\n';\n    }\n\n    const bridgeCodeBlob = new Blob([bridgeCode]);\n    const bridgeCodeURL = URL.createObjectURL(bridgeCodeBlob);\n    this._worker = new Worker(bridgeCodeURL);\n    this._worker.onmessage = e => {\n      const msg = e.data;\n      if (!msg || !(msg instanceof Object)) {\n        return;\n      }\n      if (this._messageHandler) {\n        this._messageHandler(msg);\n      }\n    };\n  }\n\n  postMessage(msg: string | Object) {\n    this._worker.postMessage(msg);\n  }\n\n  getWorker() {\n    return this._worker;\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nexport type MessageHandler = (message: Object) => mixed;\n\nexport default class Bridge {\n  _messageHandler: ?MessageHandler;\n\n  setMessageHandler(handler: MessageHandler) {\n    this._messageHandler = handler;\n    return this;\n  }\n\n  postMessage(msg: string | Object) {\n    throw new Error('Subclasses of Bridge should implement their own postMessage()');\n  }\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nimport {Scene} from 'three';\nimport {Player, GuiSys} from 'ovrui';\nimport bundleFromLocation from './bundleFromLocation';\nimport createRootView from './createRootView';\n\nimport type Bridge from './Bridge/Bridge';\nimport type {RootView} from './createRootView';\nimport type Module from './Modules/Module';\nimport type {CustomView} from './Modules/UIManager';\nimport type {Camera} from 'three';\n\ntype VRInstanceOptions = {\n  allowCarmelDeeplink?: boolean,\n  antialias?: boolean,\n  assetRoot?: string,\n  bridge?: Bridge,\n  calculateVerticalFOV?: (number, number) => number,\n  camera?: Camera,\n  canvasAlpha?: boolean,\n  cursorVisibility?: 'visible' | 'hidden' | 'auto',\n  customViews?: Array<CustomView>,\n  disableTouchPanning?: boolean,\n  enableHotReload?: boolean,\n  font?: any,\n  height?: number,\n  hideCompass?: boolean,\n  hideFullscreen?: boolean,\n  initialProps?: {[prop: string]: any},\n  nativeModules?: Array<Module>,\n  onEnterVR?: () => void,\n  onExitVR?: () => void,\n  pixelRatio?: number,\n  raycasters?: Array<any>,\n  scene?: Scene,\n  width?: number,\n};\n\n/**\n * VRInstance represents a mounted React VR application.\n * It contains such core pieces as an OVRUI player, a Three.js scene and camera,\n * and a React VR context used to execute a React application.\n */\nexport default class VRInstance {\n  guiSys: GuiSys;\n  player: Player;\n  rootView: RootView;\n  scene: Scene;\n\n  _looping: boolean;\n\n  /**\n   * Construct a VRInstance with a specific React VR application.\n   * @param bundle - The relative or absolute path to the JS bundle containing\n   *   the application\n   * @param root - The name of the root component to render, as registered with\n   *   AppRegistry from the React side.\n   * @param parent (optional) - The element which will contain the VR window.\n   *   It can be a DOM node, or the string id of a DOM node. If no parent is\n   *   specified, the VR window will be directly attached to the body tag.\n   * @param options (optional) - Extra options to configure the VRInstance.\n   *   - camera: the Three.js camera. If none, a default camera is created.\n   *   - cursorVisibility: sets when the cursor is shown. default=hidden\n   *   - disableTouchPanning: disallow touch to pan camera on mobile. Defaults to false.\n   *   - height: a number specifying the height of the VR window, in pixels\n   *   - nativeModules: array of native module instances to register\n   *   - scene: the Three.js scene to which ReactVR elements are added\n   *   - width: a number specifying the width of the VR window, in pixels\n   *   - allowCarmelDeeplink: attempts deeplinking to Carmel development\n   *       browser when enabled defaults to enabled in development builds,\n   *       disabled otherwise\n   */\n  constructor(\n    bundle: string,\n    root: string,\n    parent: Element | string,\n    options: VRInstanceOptions = {}\n  ) {\n    if (!bundle) {\n      throw new Error('Cannot initialize ReactVR without specifying a bundle');\n    }\n    if (!root) {\n      throw new Error('Cannot initialize ReactVR without specifying the root component');\n    }\n\n    // Initialize the scene that will hold our contents\n    this.scene = options.scene || new Scene();\n\n    // Allow deep-linking to the Carmel development browser if it's not\n    // explicitly disabled\n    const allowCarmelDeeplink = !!options.allowCarmelDeeplink;\n\n    // Initialize a Player container, and attach it to the parent element\n    this.player = new Player({\n      elementOrId: parent,\n\n      // Optional Player configuration\n      antialias: options.hasOwnProperty('antialias') ? options.antialias : false,\n      calculateVerticalFOV: options.calculateVerticalFOV,\n      camera: options.camera,\n      canvasAlpha: options.hasOwnProperty('canvasAlpha') ? options.antialias : true,\n      width: options.width,\n      height: options.height,\n      onEnterVR: () => this._onEnterVR(),\n      onExitVR: () => this._onExitVR(),\n      allowCarmelDeeplink: allowCarmelDeeplink,\n      disableTouchPanning: options.disableTouchPanning,\n      pixelRatio: options.pixelRatio,\n      hideFullscreen: options.hideFullscreen,\n      hideCompass: options.hideCompass,\n    });\n\n    let defaultAssetRoot = 'static_assets/';\n    if (__DEV__) {\n      defaultAssetRoot = '../static_assets/';\n    }\n    let assetRoot = options.assetRoot || defaultAssetRoot;\n    if (!assetRoot.endsWith('/')) {\n      assetRoot += '/';\n    }\n\n    // Initialize a GuiSys to use with React\n    const guiOptions = {\n      cursorVisibility: options.hasOwnProperty('cursorVisibility')\n        ? options.cursorVisibility\n        : 'hidden',\n      font: options.font,\n      raycasters: options.raycasters,\n    };\n    this.guiSys = new GuiSys(this.scene, guiOptions);\n    this.rootView = createRootView(this.guiSys, root, {\n      // Name of the mounted root module, from AppRegistry\n      assetRoot: assetRoot,\n      bridge: options.bridge,\n      bundle: bundleFromLocation(bundle),\n      customViews: options.customViews,\n      enableHotReload: options.enableHotReload,\n      initialProps: options.initialProps,\n      isLowLatency: !this.player.isMobile,\n      nativeModules: options.nativeModules,\n    });\n\n    (this: any)._frame = this._frame.bind(this);\n  }\n\n  /**\n   * Runs once per frame, to update each of the various components of this\n   * VR application.\n   * @param timestamp - current time in milliseconds; passed by the browser as\n   *   the argument to the requestAnimationFrame callback\n   */\n  _frame(timestamp: number) {\n    // Run custom render method\n    if (typeof this.render === 'function') {\n      this.render(timestamp);\n    }\n    const camera = this.player.camera;\n    this.player.frame();\n    // Get updates from GuiSys\n    this.guiSys.frame(camera, this.player.renderer);\n    // Get updates from RN\n    this.rootView.frame(camera);\n    // Render frame to output device\n    const subScenes = this.guiSys.getOffscreenRenders();\n    for (const item in subScenes) {\n      if (!subScenes.hasOwnProperty(item)) {\n        continue;\n      }\n      const params = subScenes[item];\n      this.player.renderOffscreen(params.scene, params.camera, params.renderTarget);\n    }\n    this.player.render(this.scene);\n\n    if (this._looping) {\n      this.player.requestAnimationFrame(this._frame);\n    }\n  }\n\n  _onEnterVR() {\n    this.rootView.context &&\n      this.rootView.context.callFunction('RCTDeviceEventEmitter', 'emit', ['onEnterVR', []]);\n  }\n\n  _onExitVR() {\n    this.rootView.context &&\n      this.rootView.context.callFunction('RCTDeviceEventEmitter', 'emit', ['onExitVR', []]);\n  }\n\n  /**\n   * Start rendering the application\n   */\n  start() {\n    this._looping = true;\n    this.player.requestAnimationFrame(this._frame);\n  }\n\n  /**\n   * Stop rendering the application\n   */\n  stop() {\n    this._looping = false;\n  }\n\n  /**\n   * Return the camera being used to render the scene.\n   */\n  camera() {\n    return this.player.camera;\n  }\n\n  registerTextureSource(name: string, source: Element, options: {[key: string]: any} = {}) {\n    if (this.rootView && this.rootView.context) {\n      this.rootView.context.registerTextureSource(name, source, options);\n    }\n  }\n\n  /**\n   * Mount a new root component on an existing scenegraph node, returning its\n   * unique identifier\n   */\n  mountComponent(name: string, initialProps: {[prop: string]: any}, container: SceneGraphNode) {\n    if (this.rootView) {\n      const tag = this.rootView.context.createRootView(name, initialProps, container);\n      return tag;\n    }\n    return null;\n  }\n\n  /**\n   * Unmount a root component, given its unique identifier\n   */\n  unmountComponent(tag: number) {\n    if (this.rootView) {\n      this.rootView.context.destroyRootView(tag);\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-present, Oculus, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n/**\n * @providesModule OVRVideo\n */\n\nimport BasicVideoPlayer from './BasicVideoPlayer';\nimport VRVideoComponent from './VRVideoComponent';\nimport {addCustomizedVideoPlayer} from './VRVideoPlayer';\nimport getSupportedFormats from './getSupportedFormats';\n\nexport {BasicVideoPlayer, VRVideoComponent, addCustomizedVideoPlayer, getSupportedFormats};\n"],"names":["global","__DEV__","__BUNDLE_START_TIME__","nativePerformanceNow","Date","now","_toConsumableArray","arr","Array","isArray","i","arr2","length","from","require","__d","define","modules","Object","create","verboseNamesToModuleIds","factory","moduleId","dependencyMap","exports","undefined","hasError","isInitialized","hot","createHotReloadingObject","verboseName","arguments","Error","console","warn","moduleIdReallyIsNumber","module","guardedLoadModule","inGuard","ErrorUtils","returnValue","loadModuleImplementation","e","reportFatalError","nativeRequire","unknownModuleError","moduleThrewError","error","Systrace","_module","beginEvent","moduleObject","endEvent","id","message","displayName","acceptCallback","accept","callback","acceptAll","dependentModules","inverseDependencies","notAccepted","filter","parents","push","apply","mod","__accept","assign","target","sources","TypeError","nextIndex","nextSource","key","hasOwnProperty","prototype","call","inspect","obj","opts","ctx","seen","stylize","stylizeNoColor","formatValue","depth","str","styleType","arrayToHash","array","hash","forEach","val","idx","value","recurseTimes","primitive","formatPrimitive","keys","visibleKeys","isError","indexOf","formatError","isFunction","name","isRegExp","RegExp","toString","isDate","base","braces","n","toUTCString","output","formatArray","map","formatProperty","pop","reduceToSingleString","isUndefined","isString","simple","JSON","stringify","replace","isNumber","isBoolean","isNull","l","String","match","desc","getOwnPropertyDescriptor","get","set","split","line","join","substr","numLinesEst","reduce","prev","cur","ar","arg","isNullOrUndefined","isSymbol","re","isObject","objectToString","d","isPrimitive","o","prop","OBJECT_COLUMN_NAME","LOG_LEVELS","trace","info","INSPECTOR_LEVELS","INSPECTOR_FRAMES_TO_SKIP","nativeLoggingHook","getNativeLogFunction","level","logLevel","slice","__inspectorLog","repeat","element","consoleTablePolyfill","rows","data","row","columns","sort","stringRows","columnWidths","k","j","cellStr","Math","max","joinRow","space","cells","cell","extraSpaces","separators","columnWidth","separatorRow","header","table","originalConsole","log","debug","descriptor","defineProperty","reactNativeMethod","methodName","consoleLoggingStub","_inGuard","_globalHandler","onError","setGlobalHandler","fun","getGlobalHandler","reportError","applyWithGuard","context","args","applyWithGuardIfNeeded","guard","guarded","Number","EPSILON","pow","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","isNaN","globalIsNaN","configurable","enumerable","writable","startsWith","search","string","pos","start","min","endsWith","stringLength","searchString","end","lastIndexOf","count","Infinity","RangeError","result","includes","findIndex","predicate","list","find","index","searchElement","O","len","parseInt","currentElement","arrayLike","mapFn","thisArg","C","items","symbolIterator","Symbol","iterator","mapping","usingIterator","ret","it","next","done","entries","object","values","babelHelpers","typeof","constructor","createRawReactElement","REACT_ELEMENT_TYPE","for","type","props","$$typeof","ref","_owner","classCallCheck","instance","Constructor","createClass","defineProperties","protoProps","staticProps","defineEnumerableProperties","descs","_extends","extends","source","property","receiver","Function","parent","getPrototypeOf","getter","inherits","subClass","superClass","setPrototypeOf","__proto__","interopRequireDefault","__esModule","default","interopRequireWildcard","newObj","objectWithoutProperties","possibleConstructorReturn","self","ReferenceError","slicedToArray","sliceIterator","_arr","_n","_d","_e","_i","_s","err","taggedTemplateLiteral","strings","raw","freeze","toArray","toConsumableArray","init","bundle","options","vr","VRInstance","render","window","ReactVR","bundleFromLocation","createRootView","Module","RCTBaseView","ReactNativeContext","BasicVideoPlayer","addCustomizedVideoPlayer","getSupportedFormats","root","path","location","pathname","absoluteURL","URL","protocol","host","DEVTOOLS_FLAG","HOTRELOAD_FLAG","guisys","enableDevTools","test","__REACT_DEVTOOLS_GLOBAL_HOOK__","initialProps","contextOptions","isLowLatency","customViews","assetRoot","enableHotReload","bridge","WebWorkerBridge","bundleURL","rn","nativeModules","registerModule","rootTag","frame","camera","OVRUI","THREE","ROOT_VIEW_INCREMENT","ONMOVE_EPSILON","replaceHiddenAttributes","charAt","describe","remoteModuleConfig","description","_describe","guiSys","currentRootTag","messages","lastHit","lastLocalIntersect","lastSource","UIManager","Timing","RCTResourceManager","RCTInputControls","HeadModel","RCTHeadModel","VideoModule","RCTVideoModule","AudioModule","RCTAudioModule","TextureManager","GlyphTextures","_moduleForTag","_cameraParentFromTag","AndroidConstants","AsyncLocalStorage","ControllerInfo","DeviceInfo","History","Networking","LinkingManager","Location","LocationObserver","WebSocketModule","ReactVRConstants","RCTExceptionsManager","RCTSourceCode","ExternalAssets","eventDispatcher","addEventListener","_onGuiSysEvent","bind","_onUIViewEvent","setMessageHandler","msg","cmd","results","postMessage","moduleConfig","bundleName","callFunction","hostname","port","shutdown","container","tag","function","Object3D","cameraParent","children","child","remove","event","eventType","GuiSysEventType","HIT_CHANGED","currentHit","currentSource","UIViewEventType","FOCUS_LOST","viewTag","view","getHitTag","targetTag","payload","FOCUS_GAINED","frameStart","performance","owner","receivesMoveEvent","intersect","getLastLocalIntersect","abs","offset","moduleIndex","funcIndex","params","_functionMap","_applySceneTransform","idle","worldMatrix","getSceneCameraTransform","uuid","add","matrixAutoUpdate","matrix","fromArray","updateMatrixWorld","hit","moduleName","functionName","registerLocalTextureSource","Version","constants","functions","promiseFunctions","syncFunctions","methodID","proto","protoMembers","getOwnPropertyNames","attr","member","substring","rnctx","_rnctx","_db","Promise","resolve","reject","request","indexedDB","open","onerror","onupgradeneeded","db","createObjectStore","keyPath","onsuccess","objectStore","put","delete","cb","_prepareDB","then","transaction","gets","_getRow","all","invokeCallback","pairs","puts","pair","_putRow","deletes","_deleteRow","clear","openCursor","cursor","continue","getGamepads","navigator","webkitGetGamepads","extractInfo","gamepad","buttons","axes","hand","success","controllers","gamepads","Dimensions","windowPhysicalPixels","width","height","scale","fontScale","densityDpi","screenPhysicalPixels","drawGlyph","instructions","color","fillStyle","x","y","moveTo","lineTo","radius","startAngle","endAngle","anticlockwise","arc","rect","beginPath","fill","glyph","canvas","document","createElement","getContext","translate","url","state","history","back","forward","delta","go","title","fail","pushState","initialURL","href","username","password","forceReload","reload","encodePosition","coords","timestamp","latitude","longitude","altitude","accuracy","altitudeAccuracy","heading","_watchID","geolocation","getCurrentPosition","onSuccess","watchOptions","enableHighAccuracy","maximumAge","timeout","code","watchPosition","clearWatch","method","requestId","headers","responseType","useIncrementalUpdates","toUpperCase","body","formData","form","FormData","append","fieldName","Request","fetch","response","status","text","_handleText","blob","_handleBase64","catch","res","responseData","reader","FileReader","onload","readAsDataURL","_resourceDictionaries","_resourceListener","_validProtocols","MonoTexture","isValidProtocol","isValidUrl","parsed","parseUrl","handle","spiltPos","genUrl","addListener","listener","removeListener","listenerArray","splice","_dispatchUpdate","addResource","resource","getResource","removeResource","_guiSys","_onInputEvent","INPUT_EVENT","inputEvent","isConfirmEvent","button","MouseRayCaster","RayCaster","Player","Overlay","UIView","UIViewEvent","GuiSysEvent","GuiSys","StereoBasicTextureMaterial","SDFFONT_MARKER_COLOR","TOP","RIGHT_LINE","RIGHT","LEFT","CENTER_LINE","CENTER_FIXEDHEIGHT","CENTER","BOTTOM","BASELINE","wrapLines","measureText","addFontFallback","loadFont","BitmapFontGeometry","VREffect","VRControls","DeviceOrientationControls","AppControls","_AppControls","_AppControls2","_interopRequireDefault","_DeviceOrientationControls","_DeviceOrientationControls2","_VRControls","_VRControls2","_VREffect","_VREffect2","_SDFFont","_StereoBasicTextureMaterial","_StereoBasicTextureMaterial2","_GuiSys","_GuiSys2","_GuiSysEvent","_UIView","_UIView2","_Player","_Player2","_Overlay","_Overlay2","_RayCaster","_RayCaster2","_MouseRayCaster","_MouseRayCaster2","_createClass","_MousePanControls","_MousePanControls2","_classCallCheck","_camera","nonVRControls","isSupported","setVRDisplay","vrDisplay","vrControls","setCamera","resetRotation","rotation","z","frameOptions","display","isPresenting","update","_ThreeShim","_ThreeShim2","_MobilePanControls","_MobilePanControls2","Y_UNIT","Vector3","Z_UNIT","SCREEN_ROTATION","Quaternion","sqrt","euler","Euler","getScreenOrientation","orientation","screen","mozOrientation","msOrientation","angle","degToRad","enabled","mobilePanControls","disableTouchPanning","screenOrientation","deviceOrientation","orientationChangeHandler","deviceOrientationHandler","_initialAlpha","connect","disconnect","removeEventListener","alpha","beta","gamma","quaternion","setFromEuler","orient","setFromAxisAngle","premultiply","multiply","userAgent","amd","isInteger","isFinite","floor","sign","nextKey","EventDispatcher","_listeners","listeners","hasEventListener","dispatchEvent","REVISION","MOUSE","MIDDLE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","FrontFaceDirectionCW","FrontFaceDirectionCCW","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoColors","FaceColors","VertexColors","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","Uncharted2ToneMapping","CineonToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipMapNearestFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","_Math","DEG2RAD","PI","RAD2DEG","generateUUID","chars","rnd","r","random","clamp","euclideanModulo","m","mapLinear","a1","a2","b1","b2","lerp","t","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degrees","radToDeg","radians","isPowerOfTwo","nearestPowerOfTwo","round","LN2","nextPowerOfTwo","Vector2","isVector2","setScalar","scalar","setX","setY","setComponent","getComponent","clone","copy","v","w","addVectors","addScalar","s","a","b","addScaledVector","sub","subVectors","subScalar","multiplyScalar","divide","divideScalar","clampScalar","minVal","maxVal","clampLength","ceil","roundToZero","negate","dot","lengthSq","lengthManhattan","normalize","atan2","distanceTo","distanceToSquared","dx","dy","distanceToManhattan","setLength","lerpVectors","v1","v2","equals","fromBufferAttribute","attribute","getX","getY","rotateAround","center","c","cos","sin","textureId","Texture","image","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","isTexture","toJSON","meta","textures","getDataURL","HTMLCanvasElement","createElementNS","ImageData","putImageData","drawImage","toDataURL","metadata","generator","wrap","images","dispose","transformUv","uv","Vector4","isVector4","setZ","setW","applyMatrix4","elements","setAxisAngleFromQuaternion","q","acos","setAxisAngleFromRotationMatrix","epsilon","epsilon2","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getZ","getW","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","isWebGLRenderTarget","setSize","WebGLRenderTargetCube","activeCubeFace","activeMipMapLevel","isWebGLRenderTargetCube","_x","_y","_z","_w","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","tDir","f","onChangeCallback","isEuler","order","c1","c2","c3","s1","s2","s3","axis","halfAngle","setFromRotationMatrix","setFromUnitVectors","EPS","vFrom","vTo","crossVectors","inverse","conjugate","p","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","onChange","isVector3","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyMatrix3","qx","qy","qz","qw","ix","iy","iz","iw","project","Matrix4","multiplyMatrices","projectionMatrix","getInverse","matrixWorld","unproject","transformDirection","cross","ax","ay","az","bx","by","bz","projectOnVector","vector","projectOnPlane","planeNormal","reflect","normal","angleTo","theta","dz","setFromSpherical","sinPhiRadius","phi","setFromCylindrical","setFromMatrixPosition","setFromMatrixScale","sx","setFromMatrixColumn","sy","sz","isMatrix4","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","identity","me","copyPosition","extractBasis","xAxis","yAxis","zAxis","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","ae","af","be","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","x2","y2","z2","wx","wy","wz","lookAt","eye","up","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","applyToBufferAttribute","setXYZ","determinant","transpose","tmp","setPosition","throwOnDegenerate","t11","t12","t13","t14","det","detInv","getMaxScaleOnAxis","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","tx","ty","makeScale","makeShear","compose","position","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","h","DataTexture","isDataTexture","CubeTexture","isCubeTexture","emptyTexture","emptyCubeTexture","UniformContainer","seq","arrayCacheF32","arrayCacheI32","mat4array","Float32Array","mat3array","flatten","nBlocks","blockSize","firstElem","allocTexUnits","renderer","Int32Array","allocTextureUnit","setValue1f","gl","uniform1f","addr","setValue1i","uniform1i","setValue2fv","uniform2fv","uniform2f","setValue3fv","uniform3f","g","uniform3fv","setValue4fv","uniform4fv","uniform4f","setValue2fm","uniformMatrix2fv","setValue3fm","uniformMatrix3fv","setValue4fm","uniformMatrix4fv","setValueT1","unit","setTexture2D","setValueT6","setTextureCube","setValue2iv","uniform2iv","setValue3iv","uniform3iv","setValue4iv","uniform4iv","getSingularSetter","setValue1fv","uniform1fv","setValue1iv","uniform1iv","setValueV2a","size","setValueV3a","setValueV4a","setValueM2a","setValueM3a","setValueM4a","setValueT1a","units","setValueT6a","getPureArraySetter","SingleUniform","activeInfo","setValue","PureArrayUniform","StructuredUniform","u","RePathPart","addUniform","uniformObject","parseUniform","pathLength","lastIndex","exec","matchEnd","idIsIndex","subscript","WebGLUniforms","program","getProgramParameter","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","setOptional","upload","needsUpdate","seqWithValue","ColorKeywords","Color","setRGB","isColor","setHex","setStyle","hex","setHSL","hue2rgb","style","handleAlpha","parseFloat","components","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","getHex","getHexString","getHSL","optionalTarget","hsl","hue","saturation","lightness","getStyle","offsetHSL","addColors","color1","color2","UniformsLib","common","diffuse","opacity","offsetRepeat","alphaMap","specularmap","specularMap","envmap","envMap","flipEnvMap","reflectivity","refractionRatio","aomap","aoMap","aoMapIntensity","lightmap","lightMap","lightMapIntensity","emissivemap","emissiveMap","bumpmap","bumpMap","bumpScale","normalmap","normalMap","normalScale","displacementmap","displacementMap","displacementScale","displacementBias","roughnessmap","roughnessMap","metalnessmap","metalnessMap","gradientmap","gradientMap","fog","fogDensity","fogNear","fogFar","fogColor","lights","ambientLightColor","directionalLights","properties","direction","shadow","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","distance","coneCos","penumbraCos","decay","spotShadowMap","spotShadowMatrix","pointLights","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","points","UniformsUtils","merge","uniforms","merged","uniforms_src","uniforms_dst","parameter_src","isMatrix3","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_template","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","ShaderChunk","ShaderLib","basic","vertexShader","fragmentShader","lambert","emissive","phong","specular","shininess","standard","roughness","metalness","envMapIntensity","dashed","dashSize","totalSize","cube","tCube","tFlip","equirect","tEquirect","distanceRGBA","referencePosition","nearDistance","farDistance","physical","clearCoat","clearCoatRoughness","Box2","setFromPoints","makeEmpty","il","expandByPoint","setFromCenterAndSize","halfSize","box","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","containsPoint","containsBox","getParameter","intersectsBox","clampPoint","distanceToPoint","clampedPoint","union","WebGLFlareRenderer","capabilities","vertexBuffer","elementBuffer","shader","attributes","tempTexture","occlusionTexture","vertices","faces","Uint16Array","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","ELEMENT_ARRAY_BUFFER","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGB","UNSIGNED_BYTE","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","RGBA","createProgram","vertex","getAttribLocation","renderType","occlusionMap","screenPosition","flares","scene","tempPosition","invAspect","halfViewportWidth","halfViewportHeight","screenPositionPixels","validArea","useProgram","initAttributes","enableAttribute","disableUnusedAttributes","vertexAttribPointer","FLOAT","disable","CULL_FACE","buffers","setMask","flare","matrixWorldInverse","activeTexture","TEXTURE0","TEXTURE1","copyTexImage2D","BLEND","enable","DEPTH_TEST","drawElements","TRIANGLES","UNSIGNED_SHORT","positionScreen","customUpdateCallback","updateLensFlares","jl","lensFlares","sprite","setBlending","blending","blendEquation","blendSrc","blendDst","reset","createShader","FRAGMENT_SHADER","VERTEX_SHADER","prefix","precision","shaderSource","compileShader","attachShader","linkProgram","CanvasTexture","WebGLSpriteRenderer","spritePosition","spriteRotation","spriteScale","uvOffset","uvScale","modelViewMatrix","fogType","alphaTest","fillRect","sprites","oldFogType","sceneFogType","isFog","isFogExp2","density","painterSortStable","material","visible","onBeforeRender","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","premultipliedAlpha","setTest","depthTest","depthWrite","onAfterRender","renderOrder","materialId","Material","side","flatShading","vertexColors","transparent","depthFunc","clippingPlanes","clipIntersection","clipShadows","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","overdraw","userData","isMaterial","onBeforeCompile","setValues","newValue","currentValue","isRoot","sizeAttenuation","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","morphTargets","skinning","extractFromCache","cache","parse","srcPlanes","dstPlanes","ShaderMaterial","parameters","defines","linewidth","clipping","morphNormals","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","isShaderMaterial","MeshDepthMaterial","depthPacking","isMeshDepthMaterial","MeshDistanceMaterial","isMeshDistanceMaterial","Box3","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromObject","expandByObject","scope","traverse","node","geometry","isGeometry","isBufferGeometry","intersectsSphere","closestPoint","sphere","intersectsPlane","plane","constant","getBoundingSphere","Sphere","optionalCenter","maxRadiusSq","empty","radiusSum","deltaLengthSq","getBoundingBox","Matrix3","setFromMatrix4","getNormalMatrix","matrix4","transposeIntoArray","Plane","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","denominator","intersectsLine","startSign","endSign","coplanarPoint","m1","optionalNormalMatrix","normalMatrix","referencePoint","Frustum","p0","p1","p2","p3","p4","p5","planes","frustum","setFromMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","boundingSphere","computeBoundingSphere","intersectsSprite","negRadius","d1","d2","WebGLShadowMap","_renderer","_objects","maxTextureSize","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_MorphingFlag","_SkinningFlag","_NumberOfMaterialVariants","_depthMaterials","_distanceMaterials","_materialCache","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","autoUpdate","renderReverseSided","renderSingleSided","_gl","_state","setClear","setScissorTest","faceCount","light","isPointLight","shadowCamera","mapSize","vpWidth","vpHeight","pars","updateProjectionMatrix","isSpotLightShadow","shadowMap","shadowMatrix","setRenderTarget","face","vpDimensions","renderObject","getDepthMaterial","lightPositionWorld","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","morphAttributes","isSkinnedMesh","variantIndex","localClippingEnabled","keyA","keyB","materialsForVariant","cachedMaterial","layers","isMesh","isLine","isPoints","castShadow","frustumCulled","groups","kl","group","groupMaterial","materialIndex","renderBufferDirect","WebGLAttributes","bufferType","usage","dynamic","DYNAMIC_DRAW","buffer","onUploadCallback","Float64Array","Int16Array","SHORT","Uint32Array","UNSIGNED_INT","INT","Int8Array","BYTE","Uint8Array","bytesPerElement","BYTES_PER_ELEMENT","updateBuffer","updateRange","bufferSubData","subarray","isInterleavedBufferAttribute","deleteBuffer","_order","DefaultOrder","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","Layers","mask","channel","toggle","object3DId","DefaultUp","onRotationChange","onQuaternionChange","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","receiveShadow","isObject3D","applyMatrix","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","q1","rotateX","rotateY","rotateZ","translateOnAxis","translateX","translateY","translateZ","localToWorld","worldToLocal","isCamera","getObjectById","getObjectByProperty","getObjectByName","getWorldPosition","getWorldQuaternion","getWorldRotation","getWorldScale","getWorldDirection","raycast","traverseVisible","traverseAncestors","updateMatrix","force","isRootObject","geometries","materials","serialize","library","uuids","recursive","Camera","OrthographicCamera","zoom","isOrthographicCamera","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","cx","cy","zoomW","zoomH","scaleW","scaleH","PerspectiveCamera","fov","aspect","focus","filmGauge","filmOffset","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","skew","Face3","vertexNormals","GeometryIdCount","Geometry","colors","faceVertexUvs","skinWeights","skinIndices","lineDistances","boundingBox","elementsNeedUpdate","verticesNeedUpdate","uvsNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","lineDistancesNeedUpdate","groupsNeedUpdate","computeBoundingBox","fromBufferGeometry","indices","positions","normals","uvs","uvs2","uv2","tempNormals","tempUVs","tempUVs2","addFace","computeFaceNormals","ab","fl","vA","vB","vC","computeVertexNormals","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","computeLineDistances","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","uvs1","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","uvCopy","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","precisionPoints","faceIndicesToRemove","diff","sortFacesByMaterialIndex","_id","materialIndexSort","newUvs1","newUvs2","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceVertexUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","uvsCopy","morphTarget","morphNormal","srcVertexNormal","destVertexNormal","BufferAttribute","itemSize","normalized","isBufferAttribute","setArray","setDynamic","copyAt","index1","index2","copyArray","copyColorsArray","copyIndicesArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZW","onUpload","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","computeGroups","fromGeometry","hasFaceVertexUv2","morphTargetsLength","morphTargetsPosition","morphNormalsLength","morphTargetsNormal","hasSkinIndices","hasSkinWeights","vertexUvs","arrayMax","BufferGeometry","drawRange","MaxIndex","getIndex","setIndex","addAttribute","getAttribute","removeAttribute","addGroup","clearGroups","setDrawRange","updateFromObject","direct","__directGeometry","lineDistance","fromDirectGeometry","TypeArray","pA","pB","pC","normalizeNormals","attribute1","attributeArray1","attribute2","attributeArray2","attributeSize","toNonIndexed","geometry2","array2","morphAttribute","BoxGeometry","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","MeshBasicMaterial","combine","isMeshBasicMaterial","Ray","origin","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","segCenter","segDir","v0","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","Line3","distanceSq","closestPointToPointParameter","startP","startEnd","clampToLine","startEnd2","startEnd_startP","Triangle","resultLengthSq","barycoordFromPoint","dot00","dot01","dot02","dot11","dot12","denom","invDenom","setFromPointsAndIndices","i0","i1","i2","triangle","area","midpoint","edgeList","projectedPoint","minDistance","Mesh","drawMode","updateMorphTargets","setDrawMode","ml","morphTargetInfluences","morphTargetDictionary","inverseMatrix","tempA","tempB","tempC","uvA","uvB","uvC","barycoord","intersectionPoint","intersectionPointWorld","uvIntersection","uv1","uv3","checkIntersection","raycaster","checkBufferGeometryIntersection","intersection","faceIndex","intersects","fvA","fvB","fvC","isMultiMaterial","faceMaterial","morphInfluences","tl","influence","targets","uvs_f","WebGLBackground","clearColor","clearAlpha","planeCamera","planeMesh","boxMesh","renderList","forceClear","background","autoClear","autoClearColor","autoClearDepth","autoClearStencil","getClearColor","setClearColor","getClearAlpha","setClearAlpha","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","renderItem","WebGLRenderLists","lists","absNumericalSort","WebGLMorphtargets","influencesList","objectInfluences","influences","getUniforms","WebGLIndexedBufferRenderer","infoRender","mode","setMode","calls","POINTS","renderInstances","extension","drawElementsInstancedANGLE","maxInstancedCount","WebGLBufferRenderer","drawArrays","drawArraysInstancedANGLE","WebGLGeometries","infoMemory","wireframeAttributes","onGeometryDispose","buffergeometry","_bufferGeometry","geometryAttributes","getWireframeAttribute","geometryIndex","UniformsCache","halfWidth","halfHeight","WebGLLights","ambient","directional","spot","rectArea","hemi","vector3","matrix42","setup","shadows","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","viewMatrix","intensity","isAmbientLight","isDirectionalLight","bias","isSpotLight","penumbra","isRectAreaLight","isHemisphereLight","WebGLObjects","updateList","addLineNumbers","lines","WebGLShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","programIdCount","getEncodingComponents","getTexelDecodingFunction","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","generateExtensions","rendererExtensions","chunks","envMapCubeUV","logarithmicDepthBuffer","filterEmptyLine","generateDefines","fetchAttributeLocations","identifiers","ACTIVE_ATTRIBUTES","getActiveAttrib","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","parseIncludes","pattern","include","unrollLoops","snippet","unroll","WebGLProgram","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","gammaFactorDefine","customExtensions","customDefines","prefixVertex","prefixFragment","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","numClippingPlanes","shadowMapEnabled","numClipIntersection","physicallyCorrectLights","outputEncoding","mapEncoding","envMapEncoding","emissiveMapEncoding","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","bindAttribLocation","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","LINK_STATUS","getError","VALIDATE_STATUS","diagnostics","deleteShader","cachedUniforms","cachedAttributes","getAttributes","destroy","deleteProgram","usedTimes","WebGLPrograms","programs","shaderIDs","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","parameterNames","allocateBones","skeleton","bones","floatVertexTextures","nVertexUniforms","maxVertexUniforms","nVertexMatrices","getTextureEncodingFromMap","gammaOverrideLinear","getParameters","nClipPlanes","nClipIntersection","shaderID","getMaxPrecision","currentRenderTarget","getRenderTarget","vertexTextures","gammaOutput","gammaInput","envMapMode","maxMorphTargets","maxMorphNormals","getProgramCode","acquireProgram","pl","programInfo","releaseProgram","WebGLTextures","utils","_isWebGL2","WebGL2RenderingContext","clampToMaxSize","maxSize","makePowerOfTwo","HTMLImageElement","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","filterFallback","LINEAR","onTextureDispose","deallocateTexture","onRenderTargetDispose","renderTarget","deallocateRenderTarget","textureProperties","__image__webglTextureCube","deleteTexture","__webglInit","__webglTexture","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","slot","__version","complete","uploadTexture","TEXTURE_CUBE_MAP","pixelStorei","UNPACK_FLIP_Y_WEBGL","isCompressed","isCompressedTexture","cubeImage","maxCubemapSize","isPowerOfTwoImage","glFormat","convert","glType","setTextureParameters","TEXTURE_CUBE_MAP_POSITIVE_X","mipmap","getCompressedTextureFormats","compressedTexImage2D","generateMipmap","setTextureCubeDynamic","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","getMaxAnisotropy","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","isDepthTexture","internalFormat","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT16","DEPTH_STENCIL","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","framebufferRenderbuffer","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","RGBA4","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","createRenderbuffer","setupRenderTarget","isTargetPowerOfTwo","createFramebuffer","COLOR_ATTACHMENT0","updateRenderTargetMipmap","webglTexture","WebGLProperties","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","setLocked","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","NEVER","ALWAYS","LESS","LEQUAL","EQUAL","GEQUAL","GREATER","NOTEQUAL","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","STENCIL_TEST","stencilMask","stencilFunc","stencilRef","setOp","stencilFail","stencilZFail","stencilZPass","stencilOp","stencil","clearStencil","colorBuffer","maxVertexAttributes","MAX_VERTEX_ATTRIBS","newAttributes","enabledAttributes","attributeDivisors","compressedTextureFormats","currentProgram","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","maxTextures","MAX_COMBINED_TEXTURE_IMAGE_UNITS","VERSION","lineWidthAvailable","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","emptyTextures","setFlipSided","setCullFace","enableVertexAttribArray","vertexAttribDivisorANGLE","enableAttributeAndDivisor","meshPerAttribute","disableVertexAttribArray","formats","COMPRESSED_TEXTURE_FORMATS","blendEquationSeparate","FUNC_ADD","blendFuncSeparate","ONE","blendFunc","SRC_ALPHA","ZERO","ONE_MINUS_SRC_COLOR","ONE_MINUS_SRC_ALPHA","SRC_COLOR","setMaterial","setPolygonOffset","frontFace","CW","CCW","cullFace","BACK","FRONT","FRONT_AND_BACK","setLineWidth","lineWidth","factor","POLYGON_OFFSET_FILL","SCISSOR_TEST","webglSlot","webglType","boundTexture","WebGLCapabilities","maxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getShaderPrecisionFormat","HIGH_FLOAT","MEDIUM_FLOAT","maxPrecision","MAX_TEXTURE_IMAGE_UNITS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","maxAttributes","MAX_VERTEX_UNIFORM_VECTORS","maxVaryings","MAX_VARYING_VECTORS","maxFragmentUniforms","MAX_FRAGMENT_UNIFORM_VECTORS","floatFragmentTextures","ArrayCamera","cameras","isArrayCamera","WebVRManager","device","frameData","VRFrameData","standingMatrix","standingMatrixInverse","cameraL","bounds","cameraR","cameraVR","currentSize","currentPixelRatio","onVRDisplayPresentChange","eyeParameters","getEyeParameters","renderWidth","renderHeight","getPixelRatio","setDrawingBufferSize","standing","getDevice","setDevice","getCamera","depthNear","depthFar","getFrameData","pose","stageParameters","sittingToStandingTransform","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","getLayers","layer","leftBounds","rightBounds","getStandingMatrix","submitFrame","WebGLExtensions","getExtension","WebGLClipping","globalState","numGlobalPlanes","renderingShadows","viewNormalMatrix","uniform","numPlanes","numIntersection","enableLocalClipping","projectPlanes","beginShadows","endShadows","resetGlobalState","setState","fromCache","nGlobal","lGlobal","dstArray","clippingState","skipTransform","nPlanes","flatSize","i4","WebGLUtils","REPEAT","MIRRORED_REPEAT","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","UNSIGNED_SHORT_5_6_5","HALF_FLOAT_OES","ALPHA","LUMINANCE","LUMINANCE_ALPHA","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","DST_ALPHA","ONE_MINUS_DST_ALPHA","DST_COLOR","ONE_MINUS_DST_COLOR","SRC_ALPHA_SATURATE","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","WebGLRenderer","_canvas","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","lightsArray","shadowsArray","currentRenderList","spritesArray","flaresArray","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","_this","_isContextLost","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_usedTextureUnits","_width","_height","_pixelRatio","_viewport","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_vector3","_infoMemory","_infoRender","memory","getTargetPixelRatio","contextAttributes","onContextLost","onContextRestore","objects","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","flareRenderer","spriteRenderer","initGLContext","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","setScissor","boolean","bits","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","clearTarget","preventDefault","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","renderObjectImmediate","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","isMeshPhongMaterial","isMeshStandardMaterial","isMeshNormalMaterial","normalArray","nx","ny","nz","uvArray","colorArray","setProgram","geometryProgram","updateBuffers","rangeFactor","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","LINES","TRIANGLE_STRIP","TRIANGLE_FAN","isLineSegments","isLineLoop","LINE_LOOP","LINE_STRIP","isInstancedBufferGeometry","startIndex","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","compile","isLight","initMaterial","isAnimating","onAnimationFrame","requestAnimationFrame","loop","time","animate","projectObject","opaqueObjects","transparentObjects","overrideMaterial","renderObjects","isSprite","isLensFlare","isImmediateRenderObject","camera2","materialProperties","programChange","numSupportedMorphTargets","numSupportedMorphNormals","lightsHash","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","boneMatrices","boneTextureSize","markUniformsLightsNeedsUpdate","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","refreshUniformsStandard","refreshUniformsDepth","refreshUniformsDistance","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isShadowMaterial","ltcMat","LTC_MAT_TEXTURE","ltcMag","LTC_MAG_TEXTURE","emissiveIntensity","uvScaleMap","gapSize","setFaceCulling","frontFaceDirection","textureUnit","warned","setTexture","readRenderTargetPixels","restore","textureFormat","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","readPixels","FogExp2","Fog","Scene","LensFlare","vecX","vecY","wantedRotation","SpriteMaterial","isSpriteMaterial","Sprite","intersectPoint","worldPosition","worldScale","guessSizeSq","LOD","levels","addLevel","getObjectForDistance","matrixPosition","Skeleton","boneInverses","calculateInverses","bone","isBone","offsetMatrix","identityMatrix","Bone","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","initBones","normalizeSkinWeights","gbone","rotq","scl","sw","vec","skinWeight","linecap","linejoin","Line","LineSegments","linePrecision","precisionSq","vStart","vEnd","interSegment","interRay","step","distSq","nbVertices","LineLoop","Points","threshold","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","distanceToRay","Group","VideoTexture","video","readyState","HAVE_CURRENT_DATA","CompressedTexture","DepthTexture","WireframeGeometry","ol","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","uvBuffer","subdivide","appplyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","aj","bj","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","generateBufferData","generateSegment","generateIndices","P","getPointAt","N","B","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","TorusBufferGeometry","ShapeUtils","contour","triangulate","snip","verts","px","py","aX","aY","bX","bY","cX","cY","apx","apy","bpx","bpy","cpx","cpy","cCROSSap","bCROSScp","aCROSSbp","vertIndices","nv","triangulateShape","holes","removeDupEndPts","point_in_segment_2D_colin","inSegPt1","inSegPt2","inOtherPt","intersect_segments_2D","inSeg1Pt1","inSeg1Pt2","inSeg2Pt1","inSeg2Pt2","inExcludeAdjacentSegs","seg1dx","seg1dy","seg2dx","seg2dy","seg1seg2dx","seg1seg2dy","limit","perpSeg1","perpSeg2","factorSeg1","seg1Pt","seg2Pt","seg1min","seg1max","seg1minVal","seg1maxVal","seg2min","seg2max","seg2minVal","seg2maxVal","isPointInsideAngle","inVertex","inLegFromPt","inLegToPt","legFromPtX","legFromPtY","legToPtX","legToPtY","otherPtX","otherPtY","from2toAngle","from2otherAngle","other2toAngle","removeHoles","shape","concat","hole","isCutLineInsideAngles","inShapeIdx","inHoleIdx","lastShapeIdx","prevShapeIdx","nextShapeIdx","insideAngle","lastHoleIdx","prevHoleIdx","nextHoleIdx","intersectsShapeEdge","inShapePt","inHolePt","sIdx","nextIdx","indepHoles","intersectsHoleEdge","ihIdx","chkHole","hIdx","holeIndex","shapeIndex","shapePt","holePt","holeIdx","cutKey","failedCuts","tmpShape1","tmpShape2","tmpHole1","tmpHole2","hl","minShapeIndex","counter","h2","allPointsMap","allpoints","shapeWithoutHoles","triangles","isClockWise","pts","ExtrudeGeometry","shapes","ExtrudeBufferGeometry","addShapeList","getArrays","positionAttribute","verticesArray","uvAttribute","IndexAttribute","indicesArray","sl","arrays","addShape","placeholder","amount","bevelThickness","bevelSize","bevelSegments","bevelEnabled","curveSegments","steps","extrudePath","extrudePts","extrudeByPath","uvgen","UVGenerator","WorldUVGenerator","splineTube","binormal","position2","getSpacedPoints","ahole","shapePoints","extractPoints","reverse","scalePt2","pt","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","buildLidFaces","buildSideFaces","f3","layeroffset","sidewalls","extrudeMaterial","slen1","slen2","f4","addVertex","generateTopUV","addUV","wallContour","stepIndex","stepsLength","contourIndex1","contourIndex2","generateSideWallUV","vector2","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateTorso","generateCap","slope","indexRow","sinTheta","cosTheta","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","RawShaderMaterial","Materials","Cache","files","file","LoadingManager","onLoad","onProgress","isLoading","itemsLoaded","itemsTotal","onStart","itemStart","itemEnd","itemError","DefaultLoadingManager","FileLoader","manager","load","cached","setTimeout","dataUriRegex","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","toLowerCase","ArrayBuffer","charCodeAt","Blob","parser","DOMParser","parseFromString","XMLHttpRequest","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setPath","setResponseType","setWithCredentials","setMimeType","CompressedTextureLoader","_parser","loader","loadTexture","texDatas","loaded","mipmapCount","isCubemap","DataTextureLoader","texData","ImageLoader","crossOrigin","src","setCrossOrigin","CubeTextureLoader","urls","TextureLoader","isJPEG","Light","HemisphereLight","LightShadow","SpotLightShadow","SpotLight","power","PointLight","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","AnimationUtils","arraySlice","to","isTypedArray","convertArray","forceClone","isView","DataView","getKeyframeOrder","times","compareTime","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","evaluate","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrackPrototype","TimeBufferType","ValueBufferType","DefaultInterpolation","InterpolantFactoryMethodDiscrete","getValueSize","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","setInterpolation","interpolation","factoryMethod","ValueTypeName","createInterpolant","getInterpolation","shift","timeOffset","timeScale","trim","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","KeyframeTrackConstructor","VectorKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","NumberKeyframeTrack","StringKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","KeyframeTrack","json","trackType","_getTrackTypeForValueTypeName","track","typeName","AnimationClip","duration","tracks","resetDuration","jsonTracks","frameTime","fps","clip","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","parts","animationMorphTargets","clips","parseAnimation","animation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","MaterialLoader","setTextures","getTexture","shading","BufferGeometryLoader","typedArray","TYPED_ARRAYS","drawcalls","offsets","Loader","onLoadStart","onLoadProgress","onLoadComplete","Handlers","handlers","regex","extractUrlBase","initMaterials","texturePath","createMaterial","BlendingMode","textureLoader","materialLoader","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","JSONLoader","setTexturePath","parseModel","isBitSet","fi","zLength","colorIndex","normalIndex","uvIndex","isQuad","faceA","faceB","uvLayer","nUvLayers","parseSkin","influencesPerVertex","parseMorphing","dstVertices","srcVertices","morphColors","parseAnimations","outputAnimations","morphAnimationClips","ObjectLoader","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","geometryLoader","bufferGeometryLoader","loadImage","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","CatmullRom","t2","t3","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","Curve","arcLengthDivisions","getPoint","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","last","sum","updateArcLengths","arcLengths","targetArcLength","comparison","lengthBefore","lengthAfter","segmentLength","segmentFraction","getTangent","pt1","pt2","getTangentAt","mat","MAX_VALUE","tz","LineCurve","isLineCurve","tangent","CurvePath","curves","autoClose","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","lens","cacheLengths","sums","resolution","isEllipseCurve","isSplineCurve","createPointsGeometry","createGeometry","createSpacedPointsGeometry","EllipseCurve","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","SplineCurve","intPoint","weight","point0","point1","point2","point3","CubicBezierCurve","v3","QuadraticBezierCurve","PathPrototype","fromPoints","currentPoint","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","npts","aRadius","absarc","absellipse","ellipse","firstPoint","lastPoint","Path","Shape","getPointsHoles","holesPts","extractAllPoints","ShapePath","subPaths","currentPath","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","inside","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","betterShapeHoles","newShapes","newShapeHoles","mainIdx","tmpPoints","ambiguous","toChange","sLen","sho","ho","hole_unassigned","s2Idx","froms","tos","tmpHoles","Font","createPaths","line_height","yMax","yMin","underlineThickness","paths","char","createPath","glyphs","cpx0","cpy0","cpx1","cpy1","cpx2","cpy2","laste","outline","_cachedOutline","action","ha","FontLoader","AudioContext","webkitAudioContext","setContext","AudioLoader","decodeAudioData","audioBuffer","StereoCamera","eyeSep","eyeRight","eyeLeft","eyeSepOnProjection","ymax","xmin","xmax","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","AudioListener","gain","createGain","destination","getInput","removeFilter","getFilter","setFilter","getMasterVolume","setMasterVolume","positionX","setValueAtTime","currentTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","Audio","autoplay","playbackRate","isPlaying","hasPlaybackControl","sourceType","filters","getOutput","setNodeSource","audioNode","setBuffer","play","createBufferSource","onended","onEnded","pause","stop","getFilters","setFilters","setPlaybackRate","getPlaybackRate","getLoop","setLoop","getVolume","setVolume","PositionalAudio","panner","createPanner","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getFrequencyData","getByteFrequencyData","getAverageFrequency","PropertyMixer","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","accumulate","accuIndex","currentWeight","mix","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","rootNode","findNode","nodeName","isAnimationObjectGroup","sanitizeNodeName","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","matches","objectName","objectIndex","propertyIndex","lastDot","searchSkeleton","searchNodeSubtree","childNode","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","getValue_direct","getValue_array","resolvedProperty","getValue_arrayElement","getValue_toArray","SetterByBindingTypeAndVersioning","setValue_direct","setValue_direct_setNeedsUpdate","targetObject","setValue_direct_setMatrixWorldNeedsUpdate","setValue_array","dest","setValue_array_setNeedsUpdate","setValue_array_setMatrixWorldNeedsUpdate","setValue_arrayElement","setValue_arrayElement_setNeedsUpdate","setValue_arrayElement_setMatrixWorldNeedsUpdate","setValue_fromArray","setValue_fromArray_setNeedsUpdate","setValue_fromArray_setMatrixWorldNeedsUpdate","getValue_unbound","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","AnimationObjectGroup","var_args","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","inUse","bindingsPerObject","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_root","_update","deltaTime","timeDirection","_updateWeight","timeRunning","_updateTimeScale","clipTime","_updateTime","propertyMixers","interpolantValue","loopCount","_setEndings","handle_stop","pingPong","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","remove_empty_map","_","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","Uniform","InstancedBufferGeometry","InterleavedBufferAttribute","interleavedBuffer","InterleavedBuffer","isInterleavedBuffer","InstancedInterleavedBuffer","InstancedBufferAttribute","Raycaster","PointCloud","ascSort","intersectObject","setFromCamera","intersectObjects","Clock","autoStart","oldTime","elapsedTime","running","getElapsedTime","getDelta","newTime","Spherical","other","makeSafe","vec3","Cylindrical","ImmediateRenderObject","renderCallback","VertexNormalsHelper","nNormals","objGeometry","objPos","objNorm","SpotLightHelper","cone","coneLength","coneWidth","getBoneList","boneList","SkeletonHelper","boneMatrix","matrixWorldInv","PointLightHelper","sphereSize","RectAreaLightHelper","hx","hy","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","FaceNormalsHelper","DirectionalLightHelper","lightPlane","targetLine","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","BoxHelper","Box3Helper","PlaneHelper","positions2","lineGeometry","coneGeometry","ArrowHelper","headLength","headWidth","setDirection","setColor","AxisHelper","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","pz","CatmullRomCurve3","CubicBezierCurve3","QuadraticBezierCurve3","LineCurve3","ArcCurve","SceneUtils","createMultiMaterialObject","detach","attach","Face4","LineStrip","LinePieces","MeshFaceMaterial","MultiMaterial","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","construct","ClosedSplineCurve3","SplineCurve3","Spline","initFromArray","getControlPointsArray","reparametrizeByArcLength","samplingCoef","BoundingBoxHelper","EdgesHelper","setColors","WireframeHelper","XHRLoader","BinaryTextureLoader","isIntersectionBox","isIntersectionSphere","random16","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBuffer","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","extrude","makeGeometry","fromAttribute","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","getChildByName","renderDepth","eulerOrder","useQuaternion","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","addIndex","addDrawCall","clearDrawCalls","computeOffsets","wrapAround","wrapRGB","metal","getCurrentRenderTarget","getPrecision","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","shadowMapCullFace","audioLoader","getData","updateCubeMap","GeometryUtils","geometry1","ImageUtils","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","Projector","projectVector","unprojectVector","pickingRay","CanvasRenderer","CubeGeometry","X_UNIT","YAW_SPEED","PITCH_SPEED","MIN_FOV","MobilePanControls","_target","_tracking","_swipeStart","_swipeEnd","_swipeDelta","_yaw","_pitch","_pinchLengthStart","_pinchLengthEnd","_zoomNeedsUpdate","_originalFov","_downHandler","_moveHandler","_upHandler","touches","pageX","pageY","pinchLengthStart","touch","_rotation","clientHeight","clientWidth","zoomFactor","newFov","HALF_PI","RADIAN_CONVERT","MousePanControls","yaw","pitch","tracking","mouseDownHandler","mouseMoveHandler","mouseUpHandler","lastX","screenX","lastY","screenY","innerWidth","innerHeight","deltaX","deltaY","_vrDisplay","DEFAULT_LEFT_BOUNDS","DEFAULT_RIGHT_BOUNDS","leftCamera","viewID","rightCamera","leftTranslation","rightTranslation","originalSize","originalPixelRatio","_configureRendererForVRDisplay","leftParams","rightParams","requestPresent","exitPresent","_this2","preserveAutoUpdate","leftRect","rightRect","backupScene","isStereoBackgroundReady","backgroundLeft","backgroundRight","splitLines","_DefaultFont","isBreakable","isNewLine","isWhiteSpace","LineBreaker","fontObject","fontHeight","fallback","CharMap","nextBreak","maxWidth","curFontObject","fallbacks","fallbackFontObject","xScale","FontHeight","AdvanceX","required","whitespace","_g","maxHeight","maxLines","hasPerPixelClip","lineStart","lastOption","breaker","bk","dim","maxDescent","numLines","lineWidths","charCode","yScale","descent","Height","BearingY","config","deltaZ","hAlign","vAlign","fontParms","AlphaCenter","ColorCenter","fontParamsAlphaCenter","fontParamsColorCenter","curPos","numGlyphs","positionsBuffer","texCoordBuffer","fontParmsBuffer","textColorBuffer","indicesBuffer","baseFont","yBaseScale","ma","MaxAscent","md","MaxDescent","fh","maxFontExtent","_ma","_md","_fh","maxFontHeight","maxTextHeight","startX","offsetZ","lineIndex","textColor","lastGroupIndex","lastFontObject","_index","X","NaturalWidth","Y","NaturalHeight","Width","bearingX","BearingX","bearingY","rw","rh","isSDFText","textClip","clippingEnabled","clipRegion","fontName","fontTexture","DEFAULT_FONT_TEXTURE","tex","initFontData","Glyphs","CharCode","ascent","getDefaultFont","DEFAULT_FONT_JSON","glyphData","AdvanceY","fileLoader","Weights","AlphaCenterOffset","ColorCenterOffset","_get","_StereoTextureUniforms","_StereoTextureUniforms2","_StereoShaderLib","_StereoShaderLib2","_possibleConstructorReturn","_inherits","DEFAULT_UNIFORM_COLOR","DEFAULT_OFFSET_REPEATS","_THREE$ShaderMaterial","useUV","stereo_basic_vert","stereo_basic_frag","isStereoBasicTextureMaterial","stereoOffsetRepeats","StereoTextureUniforms","stereoOffsetRepeat","StereoShaderLib","_GamepadEventInput","_GamepadEventInput2","_KeyboardEventInput","_KeyboardEventInput2","_MouseEventInput","_MouseEventInput2","_TouchEventInput","_TouchEventInput2","_UIViewUtil","DEFAULT_Z_OFFSET_SCALE","DEFAULT_CURSOR_DISTANCE","DEFAULT_CURSOR_WIDTH","RENDERSORT_DISTANCE_MULTIPLIER","RENDERSORT_DISTANCE_SHIFT","DEFAULT_TOUCH_RELEASE_DELAY","frameUpdateUID","matrixDistance","matrixA","matrixB","_applyUpdates","currentOpacity","updateContext","clipRect","renderGroup","dist","zOffset","distances","worldClipRect","calcWorldClipRect","setClipPlanes","applyUpdates","updateBillboard","billboarding","guiRoot","isVRPresenting","_requestFrames","_offscreenRenders","_offscreenRenderUID","_cursor","intersectDistance","lastAlmostHit","rayOrigin","rayDirection","lastHitCache","drawsCursor","lastLocalX","lastLocalY","lastHitImmediateListeners","ZOffsetScale","mouseOffset","mouseCursorInactiveStyle","mouseCursorActiveStyle","mouseCursorActive","touchReleaseDelay","cursorVisibility","cursorAutoDepth","cursorFixedDistance","raycasters","setParams","touchEventInput","setImmediateListener","_onTouchImmediate","_inputEventSources","_onPresentChange","requestFrameFunction","uid","cancelFrameFunction","distancesNode","frameRenderUpdates","curTime","currentRequests","sceneParams","_raycasters","cursorMesh","addCursor","frameInputEvents","caster","maxLength","getRayOrigin","getRayDirection","getMaxLength","firstHit","firstAlmostHit","rotatedDirection","hits","subScene","distanceToSubscene","_rttWidth","_rttHeight","subHits","isAlmostHit","getType","updateLastHit","isInteractable","_domElement","_fireInputEvents","_updateMouseCursorStyle","updateCursor","hitCache","hitImmediateListeners","hitViews","shouldAcceptHitEvent","immediateListener","isMouseInteractable","shouldInterceptHitEvent","makeDefaultCursor","cursorZ","lastOrigin","lastDirection","cameraToCursorX","cameraToCursorY","cameraToCursorZ","autoVisible","strokeStyle","stroke","defaultCursor","cursorStyle","collected","getTarget","setTarget","events","getEvents","registerOffscreenRender","unregisterOffscreenRender","getOffscreenRenders","setFont","setMouseCursorInactiveStyle","setMouseCursorActiveStyle","setCursorVisibility","visibility","modes","setCursorAutoDepth","flag","setCursorFixedDistance","setRaycasters","_typeof","_EventInput2","_EventInput3","LONG_PRESS_TIME","AXIS_EPSILON","GamepadEventInput","_EventInput","_previousState","_buttons","btn","buttonState","pressed","_pressed","getEventType","_axes","_axis","oldValue","EventInput","_eventType","KEYBOARD_EVENTS","KeyboardEventInput","_batchedEvents","_onKeyboardEvent","_addEventListeners","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","return","_removeEventListeners","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","altKey","ctrlKey","keyCode","metaKey","shiftKey","MOUSE_EVENTS","getDocumentBounds","MouseEventInput","_onMouseEvent","currentTarget","getBoundingClientRect","_viewportX","clientX","_viewportY","clientY","viewportX","viewportY","TOUCH_EVENTS","createTouchList","rawList","touchList","identifier","TouchEventInput","_onTouchEvent","_immediateListener","touchEvent","changedTouches","targetTouches","_RayCaster3","ORIGIN","_lastX","_lastY","_lastOrientation","_active","_handleMouseEvent","_handleTouchEvent","_handleTouchEnd","_resetLastReading","rawTouch","_endTouch","_touchReleaseTimeout","clearTimeout","_clearTouchReleaseTimeout","mag","defaultScaleType","resizeModetoScaleType","ScaleFitCenter","getScaleParams","dims","textureDim","inset","insetSize","borderWidth","scaledDims","minScale","border","cssBorderWidth","originalDim","cropUV","ScaleFixXY","ScaleCenterCrop","cropOffset","ScaleType","FIT_CENTER","FIT_XY","CENTER_CROP","resizeModeValue","PointerEvents","AUTO","NONE","BOX_NONE","BOX_ONLY","_VectorGeometry","DEFAULT_Z_OFFSET","BACKGROUND_MAT_INDEX","BORDER_MAT_INDEX","IMAGE_MAT_INDEX","DEFAULT_BACKGROUND_COLOR","DEFAULT_BORDER_COLOR","DEFAULT_IMAGE_COLOR","AnimationFunctions","spring","dt","linear","easeInEaseOut","easeIn","easeOut","keyboard","clipPlanes","backgroundMaterial","borderMaterial","imageMaterial","zIndex","dirtyGeometry","targetFrame","frameDirty","hitSlop","cursorVisibilitySlop","borderRadius","scaleType","crop","backgroundOpacity","borderOpacity","imageOpacity","localRotate","localPosition","layoutZOffset","textDirty","textHAlign","textLinecount","textVAlign","textSize","textMesh","textFontParms","autoScale","pointerEvents","isGui","updateGeometry","transform","lineCount","localTransform","VectorGeometry","thisPosition","camPosition","camAxisX","camAxisY","camAxisZ","newAxisX","newAxisY","newAxisZ","rotationMatrix","parentMatrixWorldInverse","parentRotationInverse","camMatrixWorld","setFrame","animator","startFrame","animState","frameAnimation","omdt","animatorHandle","setHitSlop","setCursorVisibilitySlop","setLayoutZOffset","setLocalTransform","setLocalRotation","quatOrEuler","setLocalPosition","setImage","invisibleTillLoad","mapurl","naturalWidth","naturalHeight","updateOffsetRepeat","xhr","setImageTexture","setImageColor","_len","_key","setBackgroundColor","_len2","_key2","setBorderColor","_len3","_key3","setInset","setInsetSize","setBorderWidth","setBorderRadius","setResizeMode","setTextureCrop","setOpacity","setAlphaTest","setText","setTextAlphaCenter","alphaCenter","setTextColor","setTextColorCenter","colorCenter","setTextHAlign","textAlign","setTextLinecount","setTextSize","setTextVAlign","setAutoScale","setIsInteractable","setIsMouseInteractable","setPointerEvents","setBillboarding","forceRaycastTest","forceRaycastTestEnabled","vTL","vTR","vBL","vBR","intersectRectangle","slop","xMin","xMax","intersectionNormalized","vgRoundedBorderRectVarying","vgGenerateIndicesBorder","VG_MOVETO","VG_LINETO","VG_BEZIERTO","VG_KAPPA90","vgAddPoint","geom","_geom$positions","vgAddPointBorder","ptA","ptB","_geom$positions2","_geom$positions3","vgTesselateBezier","y3","x4","y4","x12","y12","x23","y23","x34","y34","x123","y123","d3","magSqD","x234","y234","x1234","y1234","vgTesselateBezierBorder","x1A","y1A","x2A","y2A","x3A","y3A","x4A","y4A","x1B","y1B","x2B","y2B","x3B","y3B","x4B","y4B","x12A","y12A","x23A","y23A","x34A","y34A","x123A","y123A","dxA","dyA","d2A","d3A","x234A","y234A","x1234A","y1234A","x12B","y12B","x23B","y23B","x34B","y34B","x123B","y123B","x234B","y234B","x1234B","y1234B","vgFlattenPaths","commands","cp1","cp2","last_pt","_i2","vgFlattenPathsBorder","lastA","lastB","cp1A","cp2A","cp1B","cp2B","_i3","_i4","vgRect","vals","vgRoundedRectVarying","radBottomRight","radBottomLeft","radTopLeft","radTopRight","halfw","halfh","rxBL","ryBL","rxBR","ryBR","rxTR","ryTR","rxTL","ryTL","vgGenerateIndicesConvex","baseX","baseY","borderLeft","borderBottom","borderRight","borderTop","halfW","halfH","rxBLOuter","ryBLOuter","rxBROuter","ryBROuter","rxTROuter","ryTROuter","rxTLOuter","ryTLOuter","rxBLInner","ryBLInner","rxBRInner","ryBRInner","rxTRInner","ryTRInner","rxTLInner","ryTLInner","_vals","nexti","backgroundIndex","foregroundIndex","borderIndex","baseIndices","borderGeom","borderIndices","_OculusPlayer","_setStyles","_setStyles2","isMobile","isAndroid","isSamsung","fullscreenEvent","isVRBrowser","FALLBACK_STYLES","backgroundColor","FALLBACK_MESSAGE_STYLES","fontFamily","fontSize","fontWeight","padding","isWebGLSupported","isMobileInLandscapeOrientation","quadrant","attemptEnterVR","attemptEnterFullscreen","onDisplayActivate","onDisplayDeactivate","onDisplayConnect","onDisplayDisconnect","handleFullscreenChange","exitVR","resetAngles","handlePointerRestricted","handlePointerUnrestricted","allowCarmelDeeplink","calculateVerticalFOV","controlOptions","el","elementOrId","elementById","getElementById","_el","fixedSize","fixedPixelRatio","devicePixelRatio","addResizeHandler","_initialAngles","_lastAngle","renderFallback","canvasAlpha","glRenderer","controls","onEnterVR","onExitVR","overlay","vrButtonHandler","fullscreenButtonHandler","hideCompass","hideFullscreen","wrapper","_wrapper","appendChild","hideAndCleanUp","hideGyro","_compass","initializeDisplay","pointerLockElement","requestPointerLock","currentPointerLockElement","expectedPointerLockElement","exitPointerLock","createTextNode","rotationY","setCompassAngle","_renderUpdate","effect","_renderMonoCamera","renderOffscreen","oldClearColor","oldClearAlpha","oldSort","oldClipping","fn","enterVR","setVRButtonState","_this3","_this4","disableVRButton","attemptOculusPlayer","enableVRButton","showSupportMessage","fullscreenMethod","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","resize","_this5","timer","delay","_resizeHandler","removeResizeHandler","handler","setVRButtonText","setVRButtonHandler","setCurrentDisplay","_this6","getVRDisplays","displays","_ref","_ref2","_this7","_ref3","_ref4","isChrome","chrome","isFirefox","sidebar","isEdge","msLaunchUri","visibilityEvent","iframe","contentWindow","topNode","blurHandler","_Glyphs","Element","RAD_TO_DEG","OVERLAY_STYLES","userSelect","COMPASS_WRAPPER_STYLES","marginTop","COMPASS_STYLES","transformOrigin","VR_BUTTON_STYLES","VR_BUTTON_LABEL_STYLES","lineHeight","marginLeft","verticalAlign","FULLSCREEN_STYLES","GYRO_WRAPPER_STYLES","transition","SUPPORT_MESSAGE_STYLES","SUPPORT_ACTIONS_STYLES","paddingTop","SUPPORT_LEARN_MORE_STYLES","marginRight","textDecoration","SUPPORT_CANCEL_STYLES","handleVRButton","handleFullscreenButton","overlayNode","vrButton","vrGlyph","createViewInVrGlyph","vrButtonLabel","fullscreenButton","fullscreenGlyph","createFullscreenGlyph","compassWrapper","compass","createCompassGlyph","gyro","createGyroGlyph","gyroWrapper","borderColor","hideVRButton","childNodes","nodeValue","showGyro","supportMessage","learnMore","cancel","hideSupportMessage","removeChild","setFullscreenButtonVisibility","show","rad","deg","setStyles","styles","uppercase","SVG_NS","GYRO_PATHS","FULLSCREEN_PATHS","COMPASS_PATHS","VIEW_VR_PATHS","createGlyph","setAttributeNS","svg","headMatrix","headMatrixArray","viewMatrixArray","sendHeadModel","MEDIA_EVENT_CALLBACK_NAME","canplay","durationchange","ended","timeupdate","playing","supportedFormats","_videoDefs","_players","_mediaEventCallbacks","player","VRVideoComponent","_createVideoDef","onMediaEvent","_onMediaEvent","callbackName","mediaEvent","MediaEvent","metaData","videoTextures","setVideo","monoTextureInfo","videoPlayer","seekTo","muted","setMuted","volume","getVideoPlayer","getCustomizedSupportedFormats","_customizedVideoPlayers","_customizedSupportCache","videDef","MEDIA_EVENT_TYPES","videoElement","setAttribute","_volume","_muted","_bindMediaEvents","HAVE_ENOUGH_DATA","_unbindMediaEvents","FORMATS","ogg","mp4","mkv","webm","supportCache","canPlay","canPlayType","videoDef","_freeVideoPlayer","_freeTexture","_setVideoDef","initializeVideo","hasEnoughData","timeStamp","audioContext","VRAudioContext","supported","_audioDefs","_components","audioConfig","component","VRAudioComponent","_createAudioDef","streamingType","setAudio","mp3","m4a","wav","DEFAULT_VOLUME","DEFAULT_PANNING_MODEL","DEFAULT_DISTANCE_MODEL","DEFAULT_CONE_INNER_ANGLE","DEFAULT_CONE_OUTER_ANGLE","DEFAULT_CONE_OUTER_GAIN","vrAudioContext","_vrAudioContext","_position","_gain","getWebAudioContext","updateGainValue","_panner","audioDef","panningModel","coneInnerAngle","coneOuterAngle","coneOuterGain","nodes","_source","srcNode","getSourceNode","destNode","_disconnectNodes","_freeSource","_setAudioDef","VRAudioBufferSource","initializeAudio","_connectNodes","playbackTime","_createPanner","front","VRAudioBufferManager","_playbackTime","_isPlaying","_error","_ended","_buffer","releaseRef","stopSourceNode","createMediaEvent","_sourceNode","playSourceNode","sourceNode","_cache","_pendingRequest","_onRequestSucceed","_onRequestError","MediaError","MEDIA_ERR_DECODE","MEDIA_ERR_NETWORK","statusText","pendingRequest","_onLoad","MEDIA_ERR_ABORTED","MEDIA_ERR_SRC_NOT_SUPPORTED","IS_SUPPORTED","ContextConstructor","queueSize","_queueSize","_textureMap","_pendingTextures","_ejectionQueue","_customTextureLoads","_customTexturesWithUpdates","_refCountCache","RefCountCache","ejected","has","promise","addReference","addEntry","removeReference","updateOnFrame","cleanup","_cleanup","_stateCache","entry","refs","IDLE_CALLBACK_THRESHOLD","_timers","_sendIdleEvents","_targetFrameDuration","callbackID","jsSchedulingTime","repeats","currentTimeMillis","currentDateNowTimeMillis","adjustedDuration","initialTargetTime","sendIdle","toRemove","timers","frameElapsed","Yoga","STYLES_THAT_DONT_ALTER_LAYOUT","customDirectEventTypes","topLayout","registrationName","topLoadStart","topLoad","topLoadEnd","topEnter","topExit","topMove","topDurationChange","topEnded","topTimeUpdate","topPlayStatusChange","customBubblingEventTypes","topChange","phasedRegistrationNames","bubbled","captured","topInput","topHeadPose","_views","_viewTypes","_viewCreator","_rootViews","_viewsOfType","_layoutAnimation","registerViewType","RCTView","RCTLiveEnvCamera","RCTImage","RCTPano","RCTModel","RCTScene","RCTSound","RCTText","RCTRawText","RCTVideo","RCTVideoPano","RCTAmbientLight","RCTDirectionalLight","RCTPointLight","RCTSpotLight","RCTCylindricalPanel","RCTQuadPanel","RCTBox","RCTCylinder","RCTPlane","RCTSphere","RCTPrefetch","newView","updateView","makeDirty","childrenTags","viewToManage","viewToAdd","addChild","setParent","moveFrom","addChildTags","addAtIndices","removeFrom","cssNodeToManage","numToMove","viewsToAdd","indicesToRemove","tagsToRemove","tagsToDelete","moveFromIndex","tagToMove","getChild","getTag","viewTagToAdd","indexToAddAt","indexToRemove","tagToRemove","viewAtIndex","cssNodeToAdd","purgeView","viewCreator","forceLayout","NativeProps","createView","reactTag","newReactTag","superView","getParent","indexOfView","getIndexOf","manageChildren","removeIndex","childIndex","getChildCount","childView","presentLayout","isDirty","_lastFrameStart","layout","rootView","YGNode","calculateLayout","UNDEFINED","DIRECTION_LTR","scenes","item","CylindricalPanels","maxLineCount","wordWrapped","uiView","previous","__REACT_VR_BOUNDING","boundViz","getComputedWidth","getComputedHeight","getComputedLeft","layoutOrigin","getComputedTop","ancestorTag","errorCallback","successCallback","finished","commandId","commandArgs","receiveCommand","_dimWidth","_dimHeight","_dimDepth","_needsUpdate","_generateGeometry","_setGeometry","dimWidth","dimHeight","dimDepth","RCTBaseMesh","_lit","_shader","_wireframe","_textureURL","_loadingURL","_texture","_litMaterial","_unlitMaterial","_shaderMaterial","_shaderUniformsMap","_setLit","_setWireframe","_setMaterialParameters","_setTexture","_setColor","_color","getTextureForURL","targetUniforms","getDisplay","DISPLAY_NONE","_geometry","lit","materialParameters","INTERACTION_CALLBACKS","IS_MOUSE_INTERACTION_CALLBACKS","onEnter","onExit","onInput","onHeadPose","onChangeCaptured","onInputCaptured","onHeadPoseCaptured","onMove","MAP_CSS_WRAP","nowrap","WRAP_NO_WRAP","WRAP_WRAP","MAP_CSS_FLEX_DIRECTION","column","FLEX_DIRECTION_COLUMN","FLEX_DIRECTION_COLUMN_REVERSE","FLEX_DIRECTION_ROW","FLEX_DIRECTION_ROW_REVERSE","MAP_CSS_JUSTIFY","JUSTIFY_FLEX_START","JUSTIFY_CENTER","JUSTIFY_FLEX_END","JUSTIFY_SPACE_BETWEEN","JUSTIFY_SPACE_AROUND","MAP_CSS_ALIGN","auto","ALIGN_AUTO","ALIGN_FLEX_START","ALIGN_CENTER","ALIGN_FLEX_END","stretch","ALIGN_STRETCH","baseline","ALIGN_BASELINE","MAP_CSS_POSITION","relative","POSITION_TYPE_RELATIVE","absolute","POSITION_TYPE_ABSOLUTE","MAP_CSS_OVERFLOW","OVERFLOW_VISIBLE","hidden","OVERFLOW_HIDDEN","scroll","OVERFLOW_SCROLL","MAP_CSS_DISPLAY","flex","DISPLAY_FLEX","none","COMMAND_SET_IMMEDIATE_ON_TOUCH_END","_isPercent","_borderRadius","_borderTopLeftRadius","_borderTopRightRadius","_borderBottomLeftRadius","_borderBottomRightRadius","_borderRadiusDirty","_transformDirty","Node","interactableCount","mouseInteractableCount","insertChild","immediateEventType","immediateTag","immediateCommandId","immediateCommandArgs","dispatchViewManagerCommand","disposeThreeJSObject","setPositionPercent","EDGE_LEFT","EDGE_TOP","EDGE_RIGHT","EDGE_BOTTOM","setMarginPercent","EDGE_ALL","setMargin","EDGE_VERTICAL","EDGE_HORIZONTAL","setPaddingPercent","setPadding","setBorder","setPositionType","setAlignContent","setAlignItems","setAlignSelf","setFlexDirection","setFlexWrap","setJustifyContent","setOverflow","setDisplay","setFlex","setFlexBasisPercent","setFlexBasis","setFlexGrow","setFlexShrink","setWidthPercent","setWidth","setHeightPercent","setHeight","setMinWidthPercent","setMinWidth","setMinHeightPercent","setMinHeight","setMaxWidthPercent","setMaxWidth","setMaxHeightPercent","setMaxHeight","setAspectRatio","getBorder","allValue","getHasNewLayout","setHasNewLayout","onLayout","_getBorderValue","mtr","Commands","setImmediateOnTouchEnd","isPositive","webpackUniversalModuleDefinition","installedModules","__webpack_require__","getDefault","getModuleExports","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","run","nextTick","Item","browser","env","argv","versions","noop","on","once","off","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","Buffer","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","nbind","onRuntimeInitialized","ccall","_nbind_value","NBind","queryType","toggleLightGC","lib","moduleOverrides","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","ENVIRONMENT_IS_SHELL","importScripts","nodeFS","nodePath","shell_read","filename","binary","readBinary","globalEval","read","ex","ExitStatus","print","printErr","readbuffer","assert","scriptArgs","quit","toThrow","responseText","readAsync","xhr_onload","shell_print","shell_printErr","TRY_USE_DUMP","dump","eval","Runtime","setTempRet0","tempRet0","getTempRet0","stackSave","STACKTOP","stackRestore","stackTop","getNativeTypeSize","QUANTUM_SIZE","getNativeFieldSize","STACK_ALIGN","prepVararg","ptr","getAlignSize","vararg","dynCall","sig","functionPointers","addFunction","removeFunction","warnOnce","shown","funcWrappers","getFuncWrapper","sigCache","dynCall_wrapper","getCompilerSetting","stackAlloc","staticAlloc","STATICTOP","dynamicAlloc","HEAP32","DYNAMICTOP_PTR","TOTAL_MEMORY","enlargeMemory","alignMemory","quantum","makeBigInt","unsigned","GLOBAL_BASE","__dummy__","ABORT","EXITSTATUS","condition","abort","getCFunc","ident","cwrap","JSfuncs","writeArrayToMemory","stringToUTF8","toC","ccallFunc","returnType","argTypes","cArgs","stack","converter","Pointer_stringify","async","EmterpreterAsync","asyncFinalizers","sourceRegex","parseJSFunc","jsfunc","JSsource","ensureJSsource","cfunc","numericArgs","every","numericRet","argNames","funcstr","nargs","convertCode","cfuncname","strgfy","noSafe","HEAP8","HEAP16","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","ALLOC_NORMAL","ALLOC_STACK","ALLOC_STATIC","ALLOC_DYNAMIC","ALLOC_NONE","allocate","slab","types","allocator","zeroinit","singleType","_malloc","HEAPU8","typeSize","previousType","curr","getFunctionIndex","getMemory","staticSealed","runtimeInitialized","hasUtf","MAX_CHUNK","fromCharCode","AsciiToString","ch","stringToAscii","outPtr","writeAsciiToMemory","UTF8Decoder","TextDecoder","UTF8ArrayToString","u8Array","endPtr","decode","u0","u1","u2","u3","u4","u5","UTF8ToString","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","endIdx","lengthBytesUTF8","UTF16Decoder","demangle","__cxa_demangle_func","buf","_free","demangleAll","jsStackTrace","stackTrace","js","HEAP","HEAPU16","HEAPU32","updateGlobalBufferViews","STATIC_BASE","STACK_BASE","STACK_MAX","DYNAMIC_BASE","abortOnCannotGrowMemory","TOTAL_STACK","getTotalMemory","callRuntimeCallbacks","callbacks","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","preRun","addOnPreRun","ensureInitRuntime","preMain","exitRuntime","postRun","addOnPostRun","unshift","addOnInit","addOnPreMain","addOnExit","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","intArrayToString","chr","writeStringToMemory","lastChar","imul","ah","al","bh","bl","froundBuffer","fround","clz32","trunc","Math_cos","Math_sin","Math_tan","Math_acos","Math_asin","Math_atan","Math_atan2","Math_exp","exp","Math_log","Math_sqrt","Math_pow","Math_imul","Math_fround","Math_round","Math_clz32","Math_trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","getUniqueRunDependency","addRunDependency","removeRunDependency","clearInterval","ASM_CONSTS","$0","$1","$2","$3","$4","$5","$6","$7","_nbind","callbackSignatureList","_emscripten_asm_const_iiiiiiii","a0","a3","a4","a5","a6","_emscripten_asm_const_iiiii","_emscripten_asm_const_iiidddddd","a7","_emscripten_asm_const_iiididi","_emscripten_asm_const_iiii","_emscripten_asm_const_iiiid","_emscripten_asm_const_iiiiii","__GLOBAL__sub_I_nbind_cc","__GLOBAL__sub_I_common_cc","__GLOBAL__sub_I_Binding_cc","tempDoublePtr","_atexit","___cxa_atexit","_i64Subtract","_i64Add","_roundf","_memset","_bitshift64Shl","_abort","__decorate","decorators","Reflect","decorate","_defineHidden","__nbind_free_external","num","externalList","dereference","__nbind_reference_external","reference","_llvm_stackrestore","_llvm_stacksave","LLVM_SAVEDSTACKS","__nbind_register_pool","pageSize","usedPtr","rootPtr","pagePtr","Pool","bigEndian","makeTypeKindTbl","_a","PrimitiveType","Int64Type","BindClass","BindClassPtr","SharedClassPtr","ArrayType","CStringType","CallbackType","BindType","makeTypeNameTbl","BufferType","ExternalType","CreateValueType","BooleanType","StringType","callUpcast","globalScope","makeType","constructType","flags","_emscripten_set_main_loop_timing","Browser","mainLoop","timingMode","timingValue","scheduler","Browser_mainLoop_scheduler_setTimeout","timeUntilNextTick","tickStartTime","_emscripten_get_now","runner","Browser_mainLoop_scheduler_rAF","setImmediates","emscriptenMainLoopMessageId","Browser_setImmediate_messageHandler","stopPropagation","Browser_emulated_setImmediate","Browser_mainLoop_scheduler_setImmediate","_emscripten_set_main_loop","simulateInfiniteLoop","noSetTiming","browserIterationFunc","thisMainLoopId","currentlyRunningMainloop","Browser_mainLoop_runner","blocker","remainingBlockers","remaining","counted","updateStatus","currentFrameNumber","runIter","SDL","queueNewAudioData","resume","expected","expectedBlockers","preRet","isFullscreen","pointerLock","moduleContextCreatedCallbacks","workers","initted","hasBlobConstructor","BlobBuilder","MozBlobBuilder","WebKitBlobBuilder","URLObject","webkitURL","noImageDecoding","imagePlugin","imagePlugin_canHandle","imagePlugin_handle","byteArray","getMimetype","bb","getBlob","createObjectURL","img","Image","img_onload","revokeObjectURL","img_onerror","audioPlugin","audioPlugin_canHandle","noAudioDecoding","audioPlugin_handle","finish","audio_onerror","encode64","BASE","PAD","leftchar","leftbits","safeSetTimeout","pointerLockChange","ev","createContext","useWebGL","setInModule","webGLContextAttributes","contextHandle","GL","GLctx","makeContextCurrent","destroyContext","fullscreenHandlersInstalled","lockPointer","resizeCanvas","requestFullscreen","vrDevice","fullscreenChange","canvasContainer","parentNode","exitFullscreen","setFullscreenCanvasSize","insertBefore","setWindowedCanvasSize","updateCanvasDimensions","requestFullScreen","nextRAF","fakeRequestAnimationFrame","safeCallback","allowAsyncCallbacks","queuedAsyncCallbacks","pauseAsyncCallbacks","resumeAsyncCallbacks","safeRequestAnimationFrame","safeSetInterval","setInterval","getUserMedia","getMovementX","getMovementY","getMouseWheelDelta","wheelDelta","mouseX","mouseY","mouseMovementX","mouseMovementY","lastTouches","calculateMouseEvent","cw","scrollX","pageXOffset","scrollY","pageYOffset","adjustedX","adjustedY","asyncLoad","noRunDep","dep","arrayBuffer","resizeListeners","updateResizeListeners","setCanvasSize","noUpdates","windowedWidth","windowedHeight","wNative","hNative","widthNative","heightNative","removeProperty","setProperty","wgetRequests","nextWgetRequestHandle","getNextWgetRequestHandle","SYSCALLS","varargs","getStr","get64","getZero","___syscall6","which","stream","getStreamFromFD","FS","close","ErrnoError","errno","___syscall54","_bitshift64Lshr","_typeModule","structureList","applyStructure","outerName","outerFlags","innerName","innerFlags","param","flip","reportProblem","problem","kind","structureType","place","getComplexType","prevStructure","query","placeholderFlag","structure","subId","paramList","subType","srcSpec","spec","argList","structureParam","ptrSize","paramId","paramType","_b","_c","refKind","Type","__nbind_register_type","namePtr","readAsciiString","__nbind_register_callback_signature","typeListPtr","typeCount","typeList","readTypeIdList","makeJSCaller","__extends","Class","Parent","Base","__nbind_register_class","idListPtr","policyListPtr","superListPtr","upcastListPtr","superCount","destructorPtr","policyTbl","readPolicyList","idList","bindClass","ptrType","makeMethodCaller","boundID","superIdList","upcastList","makeBound","_removeAccessorPrefix","prefixMatcher","initial","second","__nbind_register_function","signatureType","specList","specList_1","addMethod","typeNameTbl","throwError","bind_value","__nbindValueConstructor","__nbind_get_value_object","popValue","fromJS","_emscripten_memcpy_big","_memcpy","__nbind_register_primitive","cttz_i8","_llvm_cttz_i32","___udivmoddi4","___udivdi3","___setErrNo","_sbrk","___uremdi3","_llvm_bswap_i32","___syscall140","offset_high","offset_low","whence","llseek","getdents","___syscall146","iov","iovcnt","printChar","__nbind_finish","___dso_handle","typeIdTbl","lalloc","used","lreset","page","topPage","bindType","paramCount","getTypes","getDynCall","mangleMap","float32_t","float64_t","int64_t","uint64_t","signature","arity","overload","makeOverloader","_super","heap","needsWireRead","wireRead","makeWireRead","needsWireWrite","wireWrite","makeWireWrite","heapTbl","expr","pushCString","popCString","readResources","resources","pool","writeResources","Wrapper","persist","__nbindState","Bound","shared","nbindFlags","nbindPtr","nbindShared","ptrMarker","wirePtr","__nbindConstructor","propTbl","mark","free","__nbindShared","__nbindFlags","disableMember","die","pushPointer","pendingSuperCount","ready","methodTbl","classType","overloadList","registerMethods","staticOnly","setter","overloadList_1","caller","makeCaller","registerSuperMethods","firstSuper","visitTbl","superNum","nextFirst","superId","superList","Proto","__nbindType","upcastStep","superPtr","popPointer","tryValue","pushValue","__nbindPtr","objType","pushMutablePointer","isConst","isValue","popShared","unsafe","pushShared","pushMutableShared","firstFreeExternal","External","refCount","register","popExternal","pushExternal","external","valueList","firstFreeValue","valueBase","push64","pop64","pushArray","memberType","popArray","pushString","popString","makeArgList","argCount","dummy","anyNeedsWireWrite","anyNeedsWireRead","convertParamList","paramNum","buildCallerFunction","argTypeList","callExpression","resourceSet","listResources","sourceCode","makeOpen","makeClose","buildJSCallerFunction","typeIdList","callerList","_func","_arity","Resource","openTbl","closeTbl","readList","writeList","readList_1","writeList_1","ExternalBuffer","getBuffer","byteOffset","byteLength","pushBuffer","commitBuffer","NodeBuffer","srcBuf","dirtyList","gcTimer","sweep","dirtyList_1","Module_requestFullScreen","Module_requestFullscreen","Module_requestAnimationFrame","Module_setCanvasSize","Module_pauseMainLoop","Module_resumeMainLoop","Module_getUserMedia","Module_createContext","_emscripten_get_now_actual","dateNow","fflush","invoke_viiiii","invoke_vid","invoke_fiff","invoke_vi","invoke_vii","invoke_ii","invoke_viddi","invoke_vidd","invoke_iiii","invoke_diii","invoke_di","invoke_iid","invoke_iii","invoke_viiddi","invoke_viiiiii","invoke_dii","invoke_i","invoke_viiid","invoke_viififi","invoke_viii","invoke_v","invoke_viid","invoke_idd","invoke_viiii","asmGlobalArg","NaN","asmLibraryArg","asm","A","D","E","F","G","H","I","J","K","L","M","Q","R","S","U","V","W","Z","$","aa","ba","ca","da","ea","fa","ga","ia","ja","ka","la","na","oa","pa","ra","sa","ta","ua","va","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","$a","eb","fb","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","lb","Tb","Mb","jb","Nb","Ob","sb","Pb","Qb","Rb","Sb","KA","ob","Ub","Hz","rA","Vb","Wb","Xb","Yb","Zb","$b","cc","dc","ec","fc","Gz","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","cd","dd","ed","fd","gd","hd","jd","kd","ld","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","zd","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Ld","Kd","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","qA","Xd","Yd","Vd","Wd","Zd","$d","ee","fe","ge","he","ie","je","iA","kA","ke","le","ne","oe","pe","qe","se","ue","ve","we","xe","ye","ze","Ae","Be","He","yb","Ee","HA","Ge","Fe","ib","Ce","De","Ie","Je","GA","Ke","Le","zA","Me","Ne","Oe","BA","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","tf","uf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","_f","$f","ag","bg","cg","dg","eg","fg","gg","hg","Bg","ig","jg","kg","Wy","lg","mg","Yy","og","ng","pg","qg","rg","yg","xg","wg","sg","tg","ug","vg","Ag","zg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","lt","Vs","Es","Sr","yr","Pq","dh","eh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","sh","th","uh","vh","wh","xh","yh","Eq","Fq","Jt","nq","Ah","Yp","Fp","jp","So","zo","On","vn","Om","vm","cm","Ll","Xk","Ek","hk","Lj","pj","Xi","yi","zh","Bh","Ch","Dh","Fh","Eh","Qh","Sh","Jh","Kh","Lh","Gh","Hh","Ih","Mh","sA","Nh","Oh","Ph","Uh","Rh","Th","Vh","Yh","Wh","Xh","Zh","_h","kb","$h","bi","ai","gi","ci","di","ei","ri","li","lw","hi","ii","tA","ji","ki","mi","ni","oi","pi","qi","xi","si","ti","ui","wi","vi","zi","Ai","Bi","Ci","Ji","Di","Ei","Fi","Gi","Hi","Ii","Mi","Ki","Li","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","mb","Wi","Vi","Yi","Zi","$i","gj","cj","dj","ej","fj","jj","hj","ij","kj","lj","mj","nj","oj","qj","rj","sj","tj","Aj","uj","vj","wj","xj","yj","zj","Dj","Bj","Cj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Mj","Nj","Oj","Pj","Wj","Qj","Rj","Sj","Tj","Uj","Vj","Zj","Xj","Yj","_j","$j","ak","ck","dk","ek","fk","gk","ik","jk","kk","lk","sk","mk","nk","ok","pk","qk","rk","vk","tk","uk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Fk","Gk","Hk","Ik","Pk","Jk","Kk","Lk","Mk","Nk","Ok","Sk","Qk","Rk","Tk","Uk","Vk","Wk","Yk","Zk","_k","$k","cl","dl","ll","nl","ql","rl","Al","ul","wl","xl","yl","zl","Dl","Bl","Cl","El","Fl","Gl","Hl","Il","Jl","Kl","Ml","Nl","Ol","Pl","Wl","Ql","Rl","Sl","Tl","Ul","Vl","Zl","Xl","Yl","_l","$l","am","bm","zb","dm","em","fm","gm","nm","hm","im","jm","km","lm","mm","om","pm","rm","sm","tm","um","vb","wm","xm","ym","zm","Gm","Am","Bm","Cm","Dm","Em","Fm","Jm","Hm","Im","Km","Lm","Mm","Nm","Pm","Qm","Rm","Sm","Zm","Tm","Um","Vm","Wm","Xm","Ym","an","_m","$m","bn","cn","dn","en","gn","jn","hn","un","kn","ln","mn","nn","pn","qn","sn","tn","wn","xn","yn","zn","Gn","An","Bn","Cn","Dn","En","Fn","Jn","Hn","In","Kn","Ln","Mn","Nn","Pn","Qn","Rn","Sn","Zn","Tn","Un","Vn","Wn","Xn","Yn","ao","$n","bo","co","eo","fo","io","jo","ko","ro","lo","mo","no","oo","po","qo","uo","so","vo","wo","xo","yo","hb","Ao","Bo","Co","Do","Ko","Eo","Fo","Go","Ho","Io","Jo","No","Lo","Mo","Oo","Po","Qo","Ro","Bb","To","Uo","Vo","Wo","bp","Xo","Yo","Zo","_o","$o","ap","ep","cp","dp","fp","gp","hp","ip","kp","lp","mp","np","op","qp","rp","sp","tp","xp","vp","wp","yp","zp","Ap","Bp","Cp","Dp","Ep","Gp","Hp","Ip","Jp","Qp","Kp","Lp","Mp","Np","Op","Pp","Tp","Rp","Sp","Up","Vp","Wp","Xp","Zp","_p","$p","gq","aq","bq","cq","dq","eq","fq","jq","hq","iq","kq","mq","lq","oq","pq","qq","xq","rq","sq","tq","uq","vq","wq","Aq","yq","zq","Bq","Dq","Cq","wb","Oq","Gq","Hq","Iq","Mq","Jq","Kq","Lq","xA","Nq","Qq","Rq","Sq","qr","Uq","er","Tq","Vq","Yq","_q","Wq","Xq","br","Zq","$q","cr","dr","fr","ir","gr","hr","nr","jr","kr","lr","mr","or","pr","rr","sr","tr","wr","ur","xr","zr","Ar","Mr","Br","Cr","Fr","Dr","Er","Jr","Gr","Hr","Ir","Kr","Lr","Nr","Or","Pr","Qr","Rr","Tr","Ur","Vr","ws","xs","ks","Wr","Xr","_r","Yr","Zr","ds","$r","as","es","fs","gs","hs","is","ls","os","ms","ns","ts","ps","qs","rs","ss","us","vs","Ds","ys","zs","As","Bs","Cs","Fs","Gs","$t","Hs","Ps","Qs","Is","Ls","Js","Ks","Ms","Os","Ns","Rs","Ss","Ts","Us","Ws","Xs","Ys","ft","gt","Zs","$s","bt","ct","et","ht","jt","kt","mt","nt","ot","xt","yt","st","qt","rt","tt","ut","wt","vt","zt","At","Bt","Ct","Dt","Et","Ft","Gt","Ht","It","Tt","Ot","Pt","Qt","Kt","Lt","Mt","Nt","Rt","St","Ut","Fz","Vt","Wt","Xt","Yt","Zt","_t","au","bu","du","eu","fu","Qy","gu","hu","iu","ju","ku","lu","mu","Tu","Uu","Vu","Pu","Mu","Qu","Ru","Su","nu","ou","qu","Nu","Ou","Ku","Lu","ru","tu","uu","vu","wu","Iu","Au","yu","zu","xu","Bu","Cu","Ty","Hu","Du","Eu","Fu","Gu","Ju","Wu","Xu","Yu","Zu","_u","av","$u","bv","cv","qv","kv","iv","jv","dv","fv","gv","hv","lv","mv","ov","rv","sv","tv","vv","wv","xv","Sy","yv","zv","Ry","Av","Bv","Cv","Qv","Mv","Iv","Dv","Ev","Fv","Gv","Hv","Jv","Kv","Lv","Nv","Ov","Pv","Rv","Sv","Tv","Uv","Vv","Wv","Xv","AA","Yv","Zv","_v","mw","$v","aw","dw","bw","ew","fw","gw","hw","jw","kw","nw","ow","pw","tw","uw","vw","ww","xw","yw","Aw","Iy","Jy","Ix","jx","Tw","zw","Bw","Cw","Dw","Ew","Lw","Fw","Gw","Hw","Iw","Jw","Kw","Ow","Mw","Nw","Pw","Qw","Sw","Rw","Uw","Vw","Ww","Xw","Yw","Zw","$w","fx","gx","kx","lx","mx","ox","rx","ux","vx","yx","Ax","zx","Bx","Cx","Dx","Ex","Fx","Gx","Hx","Jx","Kx","Lx","Sx","Mx","Nx","Ox","Px","Qx","Rx","Vx","Tx","Ux","Wx","Xx","Zx","Yx","gb","$x","ey","fy","gy","ly","jy","ky","my","oy","ry","uy","vy","By","zy","Ay","Cy","Dy","Ey","Fy","Gy","Hy","Py","Ky","Ly","My","Ny","Oy","Uy","Vy","Xy","Zy","$y","cz","ez","fz","hz","jz","kz","lz","mz","oz","gz","OA","Az","rz","uz","vz","Dz","Bz","Cz","Ez","Iz","Jz","Kz","Lz","Mz","Pz","EA","Rz","Tz","Vz","Oz","Qz","Sz","Uz","Nz","fA","JA","PA","NA","aA","$z","Zz","Wz","Xz","IA","FA","Yz","bA","cA","dA","eA","QA","gA","hA","jA","lA","mA","nA","oA","uA","wA","yA","CA","DA","LA","MA","RA","SA","TA","UA","VA","WA","XA","YA","nb","ZA","_A","pb","$A","aB","rb","bB","cB","tb","dB","ub","eB","fB","gB","xb","hB","iB","jB","Ab","kB","lB","Cb","mB","Db","nB","oB","qB","rB","sB","tB","uB","wB","xB","yB","zB","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","setThrew","_nbind_init","_emscripten_get_global_libc","runPostSets","establishStackSpace","dynCall_viiiii","dynCall_vid","dynCall_fiff","dynCall_vi","dynCall_vii","dynCall_ii","dynCall_viddi","dynCall_vidd","dynCall_iiii","dynCall_diii","dynCall_di","dynCall_iid","dynCall_iii","dynCall_viiddi","dynCall_viiiiii","dynCall_dii","dynCall_i","dynCall_viiid","dynCall_viififi","dynCall_viii","dynCall_v","dynCall_viid","dynCall_idd","dynCall_viiii","initialStackTop","preloadStartTime","calledMain","runCaller","callMain","argc","pad","exit","toLog","doRun","shouldRunNow","implicit","abortDecorators","what","extra","decorator","patch","original","Layout","expose","Size","Value","UNIT_POINT","UNIT_PERCENT","UNIT_AUTO","fnName","methods","asNumber","valueOf","freeRecursive","measureFunc","unsetMeasureFunc","setExperimentalFeatureEnabled","isExperimentalFeatureEnabled","getInstanceCount","toByteArray","fromByteArray","lookup","revLookup","Arr","placeHoldersCount","b64","placeHolders","tripletToBase64","encodeChunk","uint8","extraBytes","maxChunkLength","len2","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","TYPED_ARRAY_SUPPORT","typedArraySupport","kMaxLength","foo","that","encodingOrOffset","allocUnsafe","poolSize","_augment","fromArrayBuffer","fromString","fromObject","species","assertSize","alloc","checked","allocUnsafeSlow","isEncoding","actual","write","fromArrayLike","isBuffer","isnan","_isBuffer","compare","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","out","toHex","bytes","newBuf","sliceLen","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","leadSurrogate","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","normalizeArray","allowAboveRoot","splitPathRe","splitPath","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","basename","extname","ALIGN_COUNT","ALIGN_SPACE_BETWEEN","ALIGN_SPACE_AROUND","DIMENSION_COUNT","DIMENSION_WIDTH","DIMENSION_HEIGHT","DIRECTION_COUNT","DIRECTION_INHERIT","DIRECTION_RTL","DISPLAY_COUNT","EDGE_COUNT","EDGE_START","EDGE_END","EXPERIMENTAL_FEATURE_COUNT","EXPERIMENTAL_FEATURE_ROUNDING","EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS","FLEX_DIRECTION_COUNT","JUSTIFY_COUNT","LOG_LEVEL_COUNT","LOG_LEVEL_ERROR","LOG_LEVEL_WARN","LOG_LEVEL_INFO","LOG_LEVEL_DEBUG","LOG_LEVEL_VERBOSE","MEASURE_MODE_COUNT","MEASURE_MODE_UNDEFINED","MEASURE_MODE_EXACTLY","MEASURE_MODE_AT_MOST","OVERFLOW_COUNT","POSITION_TYPE_COUNT","PRINT_OPTIONS_COUNT","PRINT_OPTIONS_LAYOUT","PRINT_OPTIONS_STYLE","PRINT_OPTIONS_CHILDREN","UNIT_COUNT","UNIT_UNDEFINED","WRAP_COUNT","WRAP_WRAP_REVERSE","ran","extractURL","uri","bar","each","_radiusTop","_radiusBottom","_segments","SphereGeometryCache","createSphereGeometry","sphereRayCast","_radius","_heightSegments","_widthSegments","resizeMode","panoRayCast","sphereGeometry","cubeGeometry","CubePanoBufferGeometry","_tintOpacity","_styleOpacity","_sphereGeometry","_cubeGeometry","_material","_globe","_rightEnvMap","_leftEnvMap","_localResource","RCTBindedResource","globeOnUpdate","setSource","projScreenMatrix","maxDepth","tile","HPanoBufferGeometry","loadRemoteTexture","onLoadDisposable","_needsDispose","Prefetch","isCached","cachedTexture","getFromCache","onLoadOrChange","_currentSource","enableMipmaps","cubeTexture","flatTexture","_nextRightEnvMap","_nextLeftEnvMap","stereoFormat","stereo","StereoOffsetRepeats","_numTexturesToLoad","unregister","TOP_BOTTOM_3D","BOTTOM_TOP_3D","LEFT_RIGHT_3D","RIGHT_LEFT_3D","clipLinePlane","uv0","d0","clipLineToFrustum","pnt0","pnt1","clipped","px0","px1","dpxX","dpxY","dU","dV","texelPerPixel","zeroPrepend","HPANO_MAP_UNLOADED","HPANO_MAP_LOADING","HPANO_MAP_LOADED","maxLevels","baseurl","dirty","materialsCached","isHPanoBufferGeometry","quadCount","vertCount","offsetPosition","offsetUV","offsetIndices","referenced","fillQuad","anyVisible","tileSize","loadState","addQuad","mid_tlbr","mid_tltr","mid_blbr","mid_tlbl","mid_trbr","expansionCoef","eps","halfSide","vertexCount","isCubePanoBufferGeometry","resourceManager","requestUrl","requestCallback","prefetch","addToCache","removeFromCache","basic_vert","basic_frag","SPHERE_RADIUS","webkitGetUserMedia","mozGetUserMedia","constraints","facingMode","exact","videoTexture","_video","_videoTexture","_onUpdate","_setSource","setLit","registerModelLoader","createModelInstance","modelLoaders","modelLoader","modelDefinition","litMaterial","unlitMaterial","canLoad","createInstance","GLTF2ModelLoader","ObjModelLoader","ObjMeshInstance","_objURL","_mtlURL","_objState","_view","_mesh","_setOBJ","mtl","_setMTL","_updateMeshes","_materialMap","previousGroup","fallbackMaterial","startGroup","endGroup","hasUVs","hasVertexColors","_getMaterial","smooth","multi","unlit","definition","changed","fetchAndCacheMTL","removeMTLReference","mtlStateCache","mtlLoaders","MAP_TO_THREE_NAME","bump","displacement","addTextureMap","directory","mapParam","bumpMultiplier","forceBasic","mtlDirectory","isPhong","illum","specularExp","textureMap","mtlLoader","materialMap","readChannels","readTextureOptions","readLine","readMTLFile","CHANNELS_TEST","remainder","lineNumber","blendu","blendv","brightness","contrast","turbulence","opt","boost","texRes","mult","chan","imfchan","first","latest","channels","transparency","command","decal","chunk","fetchResource","req","fetchAndCacheOBJ","removeOBJReference","objStateCache","objLoaders","objLoader","readPoints","readTexturePoints","readPairs","readTriplets","readOBJFile","POINTS_TEST","TEXTURE_POINTS_TEST","PAIR_TEST","TRIPLET_TEST","SMOOTHING_TEST","colorMatch","fullMatch","triplets","textureCoords","currentObject","setSmoothing","OBJGroup","inherited","addMaterial","materialLibraries","starterObject","indexedPositions","iter","_pushGeometryPoint","currentGroup","textureCoord","norm","knownIndex","recursiveDispose","gltfStateCache","loadList","GLTF2MeshInstance","gltf2","activeAnimations","allAnimations","gltf","updateAnimation","GLTF2Loader","newActiveAnimations","animName","anim","fadeTime","newUrl","timeStampMS","deltaTimeMS","GLTFLoader","content","magic","convertUint8ArrayToString","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","extensionsUsed","KHR_LIGHTS","GLTFLightsExtension","KHR_MATERIALS_COMMON","GLTFMaterialsCommonExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","GLTFParser","timeEnd","glTF","GLTFRegistry","removeAll","lightId","lightNode","constantAttenuation","linearAttenuation","quadraticAttenuation","fallOffAngle","fallOffExponent","getMaterialType","khrMaterial","extendParams","materialParams","materialValues","diffuseFactor","diffuseTexture","assignTexture","specularFactor","specularTexture","shininessFactor","BINARY_EXTENSION_BUFFER_NAME","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","BIN","headerView","getUint32","chunkView","chunkIndex","chunkLength","chunkType","contentArray","pbrSpecularGlossiness","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","glossinessFactor","specularGlossinessTexture","specGlossIndex","isGLTFSpecularGlossinessMaterial","refreshUniforms","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","WEBGL_CONSTANTS","FLOAT_MAT3","FLOAT_MAT4","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","SAMPLER_2D","WEBGL_TYPE","WEBGL_COMPONENT_TYPES","WEBGL_FILTERS","WEBGL_WRAPPINGS","WEBGL_TEXTURE_FORMATS","WEBGL_TEXTURE_DATATYPES","WEBGL_SIDES","WEBGL_DEPTH_FUNCS","WEBGL_BLEND_EQUATIONS","WEBGL_BLEND_FUNCS","WEBGL_TYPE_SIZES","PATH_PROPERTIES","translation","weights","INTERPOLATION","CATMULLROMSPLINE","CUBICSPLINE","STEP","STATES_ENABLES","ALPHA_MODES","OPAQUE","MASK","_each","thisObj","fns","resolveURL","createDefaultMaterial","addMorphTargets","meshDef","primitiveDef","dependencies","attributeName","normalAttribute","POSITION","accessors","NORMAL","TANGENT","_withDependencies","_dependencies","dependency","getDependency","cacheKey","loadBuffer","bufferIndex","bufferDef","loadBufferView","bufferViewIndex","bufferViewDef","bufferViews","loadAccessors","accessor","bufferView","TypedArray","componentType","elementBytes","itemBytes","byteStride","textureIndex","textureDef","sourceURI","isObjectURL","samplers","sampler","textureName","loadMaterials","materialType","materialExtensions","khcExtension","sgExtension","pbrMetallicRoughness","metallicRoughness","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","alphaMode","normalTexture","emissiveFactor","emissiveTexture","extras","loadGeometries","primitives","attributeId","attributeEntry","bufferAttribute","loadMeshes","meshes","loadCameras","aspectRatio","xfov","yfov","znear","zfar","xmag","ymag","loadSkins","skins","skin","_skin","joints","inverseBindMatrices","loadAnimations","animationId","channelId","input","inputAccessor","outputAccessor","TypedKeyframeTrack","targetName","targetNames","loadNodes","_node","__nodes","nodeId","meshId","clonedgroup","childrenId","originalChild","originalMaterial","originalGeometry","originalInfluences","originalUserData","originalName","skinEntry","jointId","jointNode","loadScenes","buildNodeHierachy","parentObject","allNodes","_scene","COMMAND_SEEK_TO","COMMAND_PLAY","COMMAND_PAUSE","_audioModule","_counter","_handle","_playStatus","_onCanPlay","_onPlaying","_onPause","_onEnded","_onError","_onDurationChange","_onTimeUpdate","_autoPlay","_loop","_playControl","prevHandle","unload","_updatePlayStatus","addHandle","setUrl","_addMediaEventListener","_emitEvent","playStatus","autoPlay","playControl","ALIGN_MAP","justify","ALIGN_VERTICAL_MAP","NAMED_FONT_WEIGHT","bold","snapUp","inv","isTextNode","_textDirty","_visualTextDirty","_fontBorderSize","_fontWeight","_isOnLayer","textChildren","setMeasureFunc","widthMeasureMode","heightMeasureMode","measure","_numberOfLines","markTextDirty","_textColor","_fontSize","namedWeight","intValue","textAlignVertical","numberOfLines","getText","snap","parentTextColor","_text","allText","isRawText","Left","previousWidth","previousHeight","_lineCount","markDirty","isOnLayer","_videoModule","RCTVideoPlayer","onUpdateTexture","onEmitEvent","setPoster","setPlayControl","setAutoPlay","poster","_tag","_PlayStatus","_poster","_updateTexture","_updateTextureWithPoster","_chooseSupportSource","sourceInst","choseSource","prevUrl","curUrl","curFormat","setFormat","setMetaData","_updateVideoStates","cylinder","subSceneCamera","isLayer","_layerWidth","_layerHeight","_layerDensity","_layerRadius","_createRTT","rtt","offscreenUID","_layerDistance","_sockets","protocols","socketId","socket","WebSocket","binaryType","onclose","reason","onmessage","btoa","onopen","_send","codeOrId","RuntimeVersion","platform","hadFatal","exceptionId","reverseStack","displayStackAndMessage","scriptURL","fullSourceMappingURL","BRIDGE_CODE","bridgeCode","bridgeCodeBlob","bridgeCodeURL","_worker","Worker","_messageHandler","Bridge","_onEnterVR","_onExitVR","defaultAssetRoot","guiOptions","_frame","subScenes","_looping","registerTextureSource","destroyRootView"],"mappings":"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r0B,EAAur0B,GAAvr0B,EAA2r0B,EAA3r0B,EAA8r0B,EAA9r0B,EAAis0B,GAAjs0B,EAAqs0B,EAArs0B,EAAws0B,GAAxs0B,EAA4s0B,GAA5s0B,EAAgt0B,GAAht0B,EAAot0B,GAApt0B,EAAwt0B,GAAxt0B,EAA4t0B,GAA5t0B,EAAgu0B,GAAhu0B,EAAou0B,CAApu0B,EAAsu0B,EAAtu0B,EAAyu0B,GAAzu0B,EAA6u0B,GAA7u0B,EAAiv0B,GAAjv0B,EAAqv0B,GAArv0B,EAAyv0B,EAAzv0B,EAA4v0B,GAA5v0B,EAAgw0B,GAAhw0B,EAAow0B,GAApw0B,EAAww0B,GAAxw0B,EAA4w0B,EAA5w0B,EAA+w0B,EAA/w0B,EAAkx0B,EAAlx0B,EAAqx0B,GAArx0B,EAAyx0B,GAAzx0B,EAA6x0B,GAA7x0B,EAAiy0B,GAAjy0B,EAAqy0B,GAAry0B,EAAyy0B,CAAzy0B,EAA2y0B,EAA3y0B,EAA8y0B,GAA9y0B,EAAkz0B,EAAlz0B,EAAqz0B,EAArz0B,EAAwz0B,GAAxz0B,EAA4z0B,GAA5z0B,EAAg00B,GAAh00B,EAAo00B,GAAp00B,EAAw00B,GAAx00B,EAA400B,EAA500B,EAA+00B,GAA/00B,EAAm10B,GAAn10B,EAAu10B,EAAv10B,EAA010B,EAA110B,EAA610B,GAA710B,EAAi20B,EAAj20B,EAAo20B,EAAp20B,EAAu20B,GAAv20B,EAA220B,EAA320B,EAA820B,GAA920B,EAAk30B,GAAl30B,EAAs30B,EAAt30B,EAAy30B,EAAz30B,EAA430B,GAA530B,EAAg40B,GAAh40B,EAAo40B,CAAp40B,EAAs40B,EAAt40B,EAAy40B,GAAz40B,EAA640B,EAA740B,EAAg50B,GAAh50B,EAAo50B,GAAp50B,EAAw50B,GAAx50B,EAA450B,EAA550B,EAA+50B,GAA/50B,EAAm60B,GAAn60B,EAAu60B,EAAv60B,EAA060B,EAA160B,EAA660B,GAA760B,EAAi70B,GAAj70B,EAAq70B,GAAr70B,EAAy70B,GAAz70B,EAA670B,EAA770B,EAAg80B,GAAh80B,EAAo80B,GAAp80B,EAAw80B,GAAx80B,EAA480B,CAA580B,EAA880B,EAA980B,EAAi90B,GAAj90B,EAAq90B,EAAr90B,EAAw90B,GAAx90B,EAA490B,GAA590B,EAAg+0B,GAAh+0B,EAAo+0B,EAAp+0B,EAAu+0B,GAAv+0B,EAA2+0B,GAA3+0B,EAA++0B,GAA/+0B,EAAm/0B,EAAn/0B,EAAs/0B,EAAt/0B,EAAy/0B,GAAz/0B,EAA6/0B,GAA7/0B,EAAig1B,GAAjg1B,EAAqg1B,GAArg1B,EAAyg1B,EAAzg1B,EAA4g1B,GAA5g1B,EAAgh1B,GAAhh1B,EAAoh1B,GAAph1B,EAAwh1B,CAAxh1B,EAA0h1B,EAA1h1B,EAA6h1B,EAA7h1B,EAAgi1B,GAAhi1B,EAAoi1B,GAApi1B,EAAwi1B,GAAxi1B,EAA4i1B,GAA5i1B,EAAgj1B,EAAhj1B,EAAmj1B,GAAnj1B,EAAuj1B,GAAvj1B,EAA2j1B,GAA3j1B,EAA+j1B,GAA/j1B,EAAmk1B,EAAnk1B,EAAsk1B,EAAtk1B,EAAyk1B,GAAzk1B,EAA6k1B,GAA7k1B,EAAil1B,GAAjl1B,EAAql1B,GAArl1B,EAAyl1B,EAAzl1B,EAA4l1B,GAA5l1B,EAAgm1B,GAAhm1B,EAAom1B,EAApm1B,EAAum1B,GAAvm1B,EAA2m1B,GAA3m1B,EAA+m1B,GAA/m1B,EAAmn1B,EAAnn1B,EAAsn1B,GAAtn1B,EAA0n1B,GAA1n1B,EAA8n1B,GAA9n1B,EAAko1B,GAAlo1B,EAAso1B,GAAto1B,EAA0o1B,GAA1o1B,EAA8o1B,GAA9o1B,EAAkp1B,GAAlp1B,EAAsp1B,CAAtp1B,EAAwp1B,EAAxp1B,EAA2p1B,GAA3p1B,EAA+p1B,GAA/p1B,EAAmq1B,GAAnq1B,EAAuq1B,EAAvq1B,EAA0q1B,GAA1q1B,EAA8q1B,GAA9q1B,EAAkr1B,GAAlr1B,EAAsr1B,GAAtr1B,EAA0r1B,EAA1r1B,EAA6r1B,EAA7r1B,EAAgs1B,GAAhs1B,EAAos1B,GAAps1B,EAAws1B,GAAxs1B,EAA4s1B,EAA5s1B,EAA+s1B,GAA/s1B,EAAmt1B,GAAnt1B,EAAut1B,EAAvt1B,EAA0t1B,GAA1t1B,EAA8t1B,GAA9t1B,EAAku1B,EAAlu1B,EAAqu1B,GAAru1B,EAAyu1B,GAAzu1B,EAA6u1B,GAA7u1B,EAAiv1B,GAAjv1B,EAAqv1B,GAArv1B,EAAyv1B,GAAzv1B,EAA6v1B,GAA7v1B,EAAiw1B,GAAjw1B,EAAqw1B,CAArw1B,EAAuw1B,EAAvw1B,EAA0w1B,GAA1w1B,EAA8w1B,GAA9w1B,EAAkx1B,GAAlx1B,EAAsx1B,EAAtx1B,EAAyx1B,GAAzx1B,EAA6x1B,GAA7x1B,EAAiy1B,GAAjy1B,EAAqy1B,GAAry1B,EAAyy1B,EAAzy1B,EAA4y1B,GAA5y1B,EAAgz1B,GAAhz1B,EAAoz1B,EAApz1B,EAAuz1B,GAAvz1B,EAA2z1B,GAA3z1B,EAA+z1B,GAA/z1B,EAAm01B,GAAn01B,EAAu01B,GAAv01B,EAA201B,GAA301B,EAA+01B,GAA/01B,EAAm11B,GAAn11B,EAAu11B,CAAv11B,EAAy11B,EAAz11B,EAA411B,GAA511B,EAAg21B,EAAh21B,EAAm21B,GAAn21B,EAAu21B,GAAv21B,EAA221B,EAA321B,EAA821B,GAA921B,EAAk31B,GAAl31B,EAAs31B,GAAt31B,EAA031B,GAA131B,EAA831B,EAA931B,EAAi41B,GAAj41B,EAAq41B,EAAr41B,EAAw41B,GAAx41B,EAA441B,GAA541B,EAAg51B,GAAh51B,EAAo51B,GAAp51B,EAAw51B,CAAx51B,EAA051B,EAA151B,EAA651B,GAA751B,EAAi61B,GAAj61B,EAAq61B,GAAr61B,EAAy61B,GAAz61B,EAA661B,GAA761B,EAAi71B,EAAj71B,EAAo71B,EAAp71B,EAAu71B,EAAv71B,EAA071B,EAA171B,EAA671B,EAA771B,EAAg81B,GAAh81B,EAAo81B,GAAp81B,EAAw81B,GAAx81B,EAA481B,GAA581B,EAAg91B,GAAh91B,EAAo91B,CAAp91B,EAAs91B,EAAt91B,EAAy91B,GAAz91B,EAA691B,GAA791B,EAAi+1B,GAAj+1B,EAAq+1B,EAAr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"}